コンテンツにスキップ

WritableStream DefaultWriter

背景

ライターは、ReadableStream からデータをパイプするのではなく、WritableStream に直接書き込みたいときに使用されます。例えば:

function writeArrayToStream(array, writableStream) {
const writer = writableStream.getWriter();
array.forEach(chunk => writer.write(chunk).catch(() => {}));
return writer.close();
}
writeArrayToStream([1, 2, 3, 4, 5], writableStream)
.then(() => console.log('すべて完了!'))
.catch(e => console.error('ストリームにエラーが発生しました: ' + e));

プロパティ

  • writer.desiredSize int

    • ストリームの内部キューを満たすために必要なサイズ(整数)。常に 1、0(ストリームが閉じている場合)、または null(ストリームにエラーがある場合)を返します。
  • writer.closed Promise<void>

    • ライターが閉じているかどうかを示す Promise。ライターストリームが閉じられたときに Promise が解決され、ストリームにエラーがある場合は拒否されます。

メソッド

  • abort(reasonstringoptional) : Promise<void>

    • ストリームを中止します。このメソッドは、応答 undefined で解決される Promise を返します。reason はキャンセルの理由を示すオプションの人間が読める文字列です。reason は基盤となるシンクの中止アルゴリズムに渡されます。この writable stream が TransformStream の一方である場合、その中止アルゴリズムは変換の読み取り側を reason でエラー状態にします。
  • close() : Promise<void>

    • ライターを閉じることを試みます。残りの書き込みは、ライターが閉じられる前に処理を完了します。このメソッドは、ライターが正常に閉じて残りの書き込みを処理した場合に undefined で解決される Promise を返し、エラーが発生した場合は拒否されます。
  • releaseLock() : void

    • ストリームに対するライターのロックを解除します。一度解除されると、ライターはもはやアクティブではありません。このメソッドは、すべての保留中の write(chunk) 呼び出しが解決される前に呼び出すことができます。これにより、write 操作をキューに入れ、ロックを解除し、以下の例のように別のソースから writable stream にパイプを開始することができます。
let writer = writable.getWriter();
// 前置きを書き込みます。
writer.write(new TextEncoder().encode('foo bar'));
// それがまだ書き込まれている間に、他の場所から残りの本文をパイプします。
writer.releaseLock();
await someResponse.body.pipeTo(writable);
  • write(chunkany) : Promise<void>

    • データのチャンクをライターに書き込み、操作が成功した場合に解決される Promise を返します。
    • 基盤となるストリームは any よりも少ない種類の型を受け入れる場合があり、予期しない型に遭遇した場合は例外をスローします。

関連リソース