await
することができるsetTimeout
を1行で書くイディオムです。
await new Promise(resolve => setTimeout(resolve, 3000)) // 3秒待つ
// ... 3秒後の処理 ...
おまけ: よくある長めの実装からの変形手順
// よくある長めの実装
const sleep = () => new Promise(resolve => {
setTimeout(() => {
resolve()
}, 3000)
})
await sleep()
// ステップ1: () => { resolve() } は resolve に短縮する
const sleep = () => new Promise(resolve => {
setTimeout(resolve, 3000)
})
await sleep()
// ステップ2: resolve => {} は resolve => に短縮する
const sleep = () => new Promise(resolve => setTimeout(resolve, 3000))
const promise = sleep()
await promise
// ステップ3: sleep()は関数でなくていいので値にする
const promise = new Promise(resolve => setTimeout(resolve, 3000))
await promise
// ステップ4: 完成
await new Promise(resolve => setTimeout(resolve, 3000))