Wiki_JS_Stream - inoueshinichi/Wiki_Web GitHub Wiki

Stream : イベント駆動型非同期制御

  • 基底クラス : EventEmitter
  • 全体のデータをチャンク(64KB=64*1024ぐらい)に分解したイベント毎にコールバック関数が何度も呼ばれる

参考

Streamの作成手順

  1. チャンクごとのイベントに対するコールバック関数を定義
  2. 全体が終了した際の終了イベントのコールバック関数を定義
  3. 非同期例外が発生した時のイベントのコールバック関数を定義

Streamの種類

  • Writable : 書き込み専用Stream
  • Readable : 読み込み専用Stream
  • Duplex : R/WなStream
  • Transform : チャンク毎に変換を挟むStream

イベントの発火と受信

  • *.emit() : 発火
  • *.on() : 受信

AsyncIterator

  • 非同期処理だが順序は守るイベントStream
for await (const chunk of stream) {
  ...
}

AsyncGenerator

  • 非同期の順序を守るイベントを作成する
async function* generator() {
  yield ***;
}