コールバックを await で待ち受ける(JavaScript)

  • 1
    Like
  • 0
    Comment

await は async および Promise を待ち受けることができますが、当然、旧来のコールバックは待ち受けることができません。自分の書いてるコードであれば Promise を返すように書き換えればいいのですが、ライブラリがコールバックを返す場合は困ったりします。

そういう場合、Promise で包んであげれば待ち受けることができます。

例えば setTimeout() のコールバックの実行が完了するのを待ち受けるコードは次のようになります。

asyncな関数orメソッドorアロー関数の中のコード
// ...

const hoge = await (() =>
  new Promise(resolve => {
    setTimeout(() => {
      resolve('hoge')
    }, 2000)
  }))()

console.log(hoge) // 2秒後に hoge が出力される

// ...