Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Node.js24.x】ReadableStreamDefaultController::ReadableStreamDefaultController()関数の使い方

ReadableStreamDefaultController関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

ReadableStreamDefaultController関数は、Node.jsにおけるReadableStream(読み取り可能なストリーム)の内部的な動作を制御するために使用される関数です。この関数は、ReadableStreamを生成する際に内部で呼び出され、ストリームのデータ供給源(プロデューサー)がストリームの状態を管理するためのコントローラーオブジェクトを提供します。

具体的には、ReadableStreamDefaultControllerのインスタンスを通じて、ストリームに新しいデータを追加するenqueue()メソッド、ストリームの読み取りを正常に終了させるclose()メソッド、およびストリームで発生したエラーを報告するerror()メソッドを利用できます。開発者は、ReadableStreamのコンストラクタに渡すstartメソッドやpullメソッドのコールバック関数内で、このコントローラーオブジェクトを引数として受け取ります。そして、受け取ったコントローラーオブジェクトのメソッドを呼び出すことで、非同期のデータソースから生成されたデータをストリームに供給したり、データの供給が完了したことやエラーが発生したことをストリームに通知したりします。

このコントローラーは、ストリームのデータの流れを効率的に管理し、消費側がデータを処理できる量に応じて供給側が調整を行うバックプレッシャーなどの仕組みを実装する上で重要な役割を果たします。これにより、システム全体のパフォーマンスと安定性を保ちながら、柔軟なデータストリーム処理を実現します。

構文(syntax)

1new ReadableStream({
2  start(controller) {
3    controller.enqueue('data');
4    controller.close();
5  }
6});

引数(parameters)

stream, underlyingSource, pullAlgorithm, cancelAlgorithm, highWaterMark, strategy

  • stream: ReadableStream: このコントローラーが制御するReadableStreamインスタンス
  • underlyingSource: ReadableStreamDefaultReader | ReadableStreamSource: ストリームの基盤となるソースオブジェクト。リソースの生成や解放を担当します。
  • pullAlgorithm: (controller: ReadableStreamDefaultController) => Promise<void> | undefined: チャンクの供給を要求されたときに実行される非同期関数。controller.enqueue()でチャンクを追加します。
  • cancelAlgorithm: (reason: any) => Promise<void> | undefined: ストリームがキャンセルされたときに実行される非同期関数。
  • highWaterMark: number: ストリームが「高水位」状態と見なされるための、チャンクの総容量または数。
  • strategy: QueuingStrategy: チャンクのキューイング戦略を定義するオブジェクト。

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ