プロミスによる遅延
組み込み関数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から値は返しません。遅延を確実に実行するだけです。