質問: JavaScriptで、処理を停止(setTimeout()で待つのではなく、無限に待ちたい)させて、 ユーザのイベントを待って、例えばクリックイベントが発生したら動きだすような処理は、 どのように書けばよいでしょうか? ビジーループは使わない方向でお願い致します。
回答: javascriptでは何かが完了したときに次の処理を行うための仕組みとして`Promise`というものが存在し、それを利用した`async`/`await`という構文があります。 「クリックイベントが発生したら次の処理を実行するPromise」を作成し、それを利用すればほぼ目的の動作が実現できると思います。 ``` const WaitForClick = () => new Promise(resolve => document.body.addEventListener("click", resolve)); async function WaitSample() { console.log("クリック待ち開始。"); await WaitForClick(); console.log("この行は、クリックされた後に実行されます。"); } WaitSample(); ```