promise での遅延
組み込み関数 setTimeout はコールバックを使用します。promise ベースで代替のものを作成してください。
関数 delay(ms) は promise を返す必要があります。その promise は ms ミリ秒後に解決され、そこへ .then を追加することができます。次のようになります:
function delay(ms) {
  // あなたのコード
}
delay(3000).then(() => alert('runs after 3 seconds'));function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
delay(3000).then(() => alert('runs after 3 seconds'));このタスクでは、resolve が引数無しで呼び出されることに注意してください。delay からは何の値も返しません、ただ遅延を保証します。