レッスンに戻る

プロミスによる遅延

組み込み関数setTimeoutはコールバックを使用しています。Promiseベースの代替を作成してください。

関数delay(ms)はPromiseを返すようにします。このPromiseはmsミリ秒後に解決されるようにする必要があります。こうすることで、以下のように.thenを追加できるようになります。

function delay(ms) {
  // your code
}

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から値は返しません。遅延を確実に実行するだけです。