Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2022年5月.
WritableStream() コンストラクターは、新しい WritableStream オブジェクトのインスタンスを作成します。
構築されたストリームのインスタンスの振る舞いを定義するメソッドとプロパティを含むオブジェクト。 underlyingSink には以下を含めることができます。このメソッドに渡される controller 引数は WritableStreamDefaultController であり、これを使用して中止やエラーの通知を行うことができます。
start(controller) 省略可これは、オブジェクトが構築されたときにすぐに呼び出されるメソッドです。このメソッドの中身は開発者が定義し、基礎となるシンクにアクセスすることを目的とする必要があります。この処理が非同期で行われる場合は、成功か失敗かを示すプロミスを返すことができます。
write(chunk, controller) 省略可このメソッドも開発者によって定義され、新しいデータチャンク (chunk 引数で指定されたもの)が基底のシンクに書き込める状態になったときに呼び出されます。このメソッドは、書き込み処理の成功または失敗を示すプロミスを返すことができます。このメソッドは前回の書き込みが成功した後にのみ呼び出され、ストリームが閉じられたり中断されたりした後には呼び出されません(下記参照)。
close(controller) 省略可このメソッドも開発者によって定義され、アプリがストリームへのチャンクの書き込みを完了したことを通知すると呼び出されます。中身は、基礎となるシンクへの書き込みを確定し、それへのアクセスを解放するために必要なことを何でも行う必要があります。 この処理が非同期である場合、成功または失敗を示すプロミスを返すことができます。このメソッドは、キューに入れられたすべての書き込みが成功した後にのみ呼び出されます。
abort(reason) 省略可このメソッドも開発者によって定義され、アプリが突然ストリームを閉じてエラー状態にしたいことを合図したときに呼び出されます。これは close() のように保持されたリソースを整理することができますが、書き込みがキューイングされている場合でも abort() が呼び出されます - これらのチャンクは破棄されます。この処理が非同期の場合、成功や失敗のシグナルのためにプロミスを返すことができます。 reason 引数には、ストリームが中断された理由を記述する文字列を指定します。
queuingStrategy 省略可オプションでストリームのキューイング戦略を定義するオブジェクト。 これには次の 2 つの引数が必要です。
highWaterMark負でない整数です。これは、背圧が適用される前に内部キューに含めることができるチャンクの総数を定義します。
size(chunk)chunk 引数を含むメソッドです。これは、各チャンクに使用するサイズをバイト単位で示します。
メモ: 独自のカスタム queuingStrategy を定義するか、このオブジェクト値に ByteLengthQueuingStrategy または CountQueuingStrategy のインスタンスを使用できます。 queuingStrategy が指定されていない場合、使用されるデフォルトは、最高水準点が 1 の CountQueuingStrategy と同じです。
WritableStream オブジェクトのインスタンス。
次の例は、このインターフェイスのいくつかの機能を示しています。 カスタムのシンクと API 提供のキューイング戦略を使用した WritableStream の作成を示しています。 次に、sendMessage() という関数を呼び出し、新しく作成したストリームと文字列を渡します。 この関数内で、WritableStreamDefaultWriter のインスタンスを返すストリームの getWriter() メソッドを呼び出します。 forEach() 呼び出しを使用して、文字列の各チャンクをストリームに書き込みます。 最後に、write() および close() は、チャンクとストリームの成功または失敗に対処するためのプロミスを返します。
完全なコードは、単純なライターの例にあります。
API での背圧のサポート方法により、コードでの実装は明白ではありません。 背圧がどのように実装されているかを確認するには、3 つのことを探します。
| Streams # ref-for-ws-constructor④ |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年6月24日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.