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