ユーザーアイコン

mizuko

約1か月前

0
0

TypeScript の Async Generator について

Typescript

この機能は以下二つの概念を組み合わせたもの

  • Generator(ジェネレーター)- イテレーターを生成する関数
  • Async(非同期)- Promiseベースの非同期処理

構文

async *functionName() { // ^ アスタリスク(*)はジェネレーター関数を示す // async キーワードは非同期関数であることを示す }

async function* asyncNumberGenerator() { yield await Promise.resolve(1); yield await Promise.resolve(2); yield await Promise.resolve(3); } // 非同期ジェネレーターを使用したイテレーション async function run() { for await (const num of asyncNumberGenerator()) { console.log(num); // 1, 2, 3 の順で出力 } }

良いところ

  • メモリ効率が良い(全データを同時に保持しない)
  • 必要なときに必要な分だけデータを生成/取得
  • 無限のデータストリームも扱える
  • バッチ処理やストリーミング処理に適している