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

【Node.js24.x】Object::ReadableStreamDefaultReader()メソッドの使い方

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

作成日: 更新日:

基本的な使い方

ReadableStreamDefaultReaderメソッドは、Node.jsのWeb Streams APIにおいて、ReadableStreamオブジェクトからデータを読み取るための機能を提供するメソッド群を指すものとして理解できます。これは実際にはReadableStreamDefaultReaderという名前のクラスであり、そのインスタンスが持つ操作(メソッド)によって、ストリームからのデータ読み取りが実現されます。

具体的には、ReadableStreamからgetReader()メソッドを呼び出すことで取得されるReadableStreamDefaultReaderインスタンスが持つ操作群を指します。このインスタンスは、非同期的にデータを順次取得するread()メソッドを提供し、ストリームが終了するかエラーが発生するまでチャンクと呼ばれるデータを消費することができます。read()メソッドはPromiseを返し、データが利用可能になるかストリームが終了するまで待機します。また、cancel()メソッドを使用することで、ストリームの読み取りを中断し、基となるソースを閉じることが可能です。さらに、releaseLock()メソッドは、このリーダーが持っていたReadableStreamへのロックを解放し、別のリーダーがそのストリームにアクセスできるようにします。これらのメソッドを通じて、開発者は大きなファイルやネットワークからのストリーミングデータを効率的かつ非同期に処理し、システムへの負荷を軽減しながらアプリケーションの応答性を高めることができます。Node.js環境におけるデータの流れを制御する上で重要な役割を担っています。

構文(syntax)

1// ReadableStreamDefaultReader の構文例
2
3// まず、ReadableStream のインスタンスが必要です。
4// ここではWeb Streams APIに準拠したReadableStreamを作成します。
5const myReadableStream = new ReadableStream({
6  start(controller) {
7    controller.enqueue(new TextEncoder().encode('データ1'));
8    controller.enqueue(new TextEncoder().encode('データ2'));
9    controller.close(); // ストリームの終了
10  }
11});
12
13async function readStreamExample() {
14  // ReadableStreamDefaultReader のインスタンスを取得します。
15  // これは ReadableStream の getReader() メソッドを呼び出すことで行います。
16  const reader = myReadableStream.getReader();
17
18  try {
19    // read() メソッドを使ってストリームからデータを読み取ります。
20    // read() は { value, done } オブジェクトを解決するPromiseを返します。
21    // value には読み取られたデータ(Uint8Array)、done はストリームが終了したかを示します。
22    let result = await reader.read();
23    while (!result.done) {
24      console.log('受信データ:', new TextDecoder().decode(result.value));
25      result = await reader.read();
26    }
27    console.log('ストリームの読み取りが完了しました。');
28  } catch (error) {
29    console.error('ストリームの読み取り中にエラーが発生しました:', error);
30  } finally {
31    // リーダーのロックを解放します。
32    // これにより、他のリーダーが同じストリームを使用できるようになります。
33    reader.releaseLock();
34  }
35}
36
37readStreamExample();

引数(parameters)

stream

  • stream: ReadableStream: 読み取る対象の ReadableStream インスタンス

戻り値(return)

ReadableStreamDefaultReader

ReadableStreamDefaultReader は、ReadableStream からデータを読み取るためのリーダーオブジェクトを返します。このリーダーオブジェクトは、read() メソッドを呼び出すたびに、ストリームから次のチャンク(データのかたまり)を非同期に取得するために使用されます。

関連コンテンツ

関連プログラミング言語