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

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

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

作成日: 更新日:

基本的な使い方

ReadableStreamDefaultReader関数は、Web Streams APIの一部として、ReadableStreamから非同期的にデータを読み取るためのリーダーオブジェクトを生成するコンストラクタ関数です。この関数は、new ReadableStreamDefaultReader(stream)のように呼び出され、引数として既存のReadableStreamのインスタンスを受け取ります。生成されたリーダーオブジェクトは、そのストリームに対するロックを確立し、他のリーダーが同時にストリームから読み取ることを防ぎます。

システムエンジニアを目指す初心者の方にとって、ストリーム処理は大量のデータやネットワークからの継続的なデータフローを効率的に扱う上で非常に重要な概念です。ReadableStreamDefaultReaderは、そのようなシナリオでストリームからのデータをチャンク(データのかたまり)として順次取得し、処理を進めるための主要な手段を提供します。例えば、大きなファイルをダウンロードする際や、リアルタイムでサーバーからデータを受け取る際などに、データをすべてメモリに読み込むことなく、少しずつ処理していくことが可能になります。

生成されたリーダーオブジェクトは、主にread()メソッドを通じてストリームから次のデータチャンクを非同期的に要求し、releaseLock()メソッドでリーダーとストリーム間の関連付けを解除します。これにより、ストリームのリソースを適切に管理し、非同期かつ効率的なデータ処理を実現します。この仕組みを理解することは、現代のウェブアプリケーションやバックエンドシステム開発において、パフォーマンスとリソース管理の観点から非常に有益です。

構文(syntax)

1const stream = new ReadableStream({
2  start(controller) {
3    controller.enqueue(new TextEncoder().encode("Chunk 1"));
4    controller.enqueue(new TextEncoder().encode("Chunk 2"));
5    controller.close();
6  }
7});
8
9const reader = stream.getReader();
10
11async function readStream() {
12  while (true) {
13    const { value, done } = await reader.read();
14    if (done) {
15      break;
16    }
17    console.log(new TextDecoder().decode(value));
18  }
19  reader.releaseLock();
20}
21
22readStream();

引数(parameters)

stream

  • stream: ReadableStream: 読み込み対象となるReadableStreamを指定します。

戻り値(return)

ReadableStreamDefaultReader

ReadableStreamDefaultReaderクラスのインスタンスを生成します。このインスタンスは、ReadableStreamからデータを読み取るための機能を提供します。

関連コンテンツ