プログラムを書いていると、一定時間処理を停止して待ってから処理を再開したいことがあります。
大抵の処理系にはdelay()やsleep()などの一定時間スレッドを停止する関数が提供されますが、基本的にシングルスレッドのJavaScriptでは、スレッドを停止するとすべての処理が止まってしまうため、delay()やsleep()に相当する機能は提供されていません。
まあ、setTimeout()で同じ事は出来るのですが、とっても読みにくいコードになってしまいます。
最近のJavaScriptでは、async/awaitが使えるようになりましたので、この機能を利用すれば、delay()やsleep()相当の機能を簡単に実現できます。
例えば、↓のコードを使えば、関数の好きな場所でawait awaitDelay()と書くことで、一定時間処理を停止させることができます。
内部実装的にはコールバックなのですが、少なくともコードの見た目的には、 delay()やsleep() と同じ書き方が出来ます。