Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
WritableStreamDefaultController: signal-Eigenschaft
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since März 2023.
Hinweis: Diese Funktion ist inWeb Workers verfügbar.
Die schreibgeschütztesignal-Eigenschaft derWritableStreamDefaultController-Schnittstelle gibt das mit dem Controller verknüpfteAbortSignal zurück.
In diesem Artikel
Wert
EinAbortSignal-Objekt.
Beispiele
>Abbrechen eines langen Schreibvorgangs
In diesem Beispiel simulieren wir einen langsamen Vorgang mit einem lokalen Sink: Wir tun nichts, wenn einige Daten geschrieben werden, außer eine Sekunde zu warten. Dies gibt uns genügend Zeit, diewriter.abort()-Methode aufzurufen und das Versprechen sofort abzulehnen.
const writingStream = new WritableStream({ // Define the slow local sink to simulate a long operation write(chunk, controller) { return new Promise((resolve, reject) => { controller.signal.addEventListener("abort", () => reject(controller.signal.reason), ); // Do nothing but wait with the data: it is a local sink setTimeout(resolve, 1000); // Timeout to simulate a slow operation }); },});// Perform the writeconst writer = writingStream.getWriter();writer.write("Lorem ipsum test data");// Abort the write manuallyawait writer.abort("Manual abort!");Übertragen desAbortSignal auf die darunterliegende Ebene
In diesem Beispiel verwenden wir dieFetch API, um die Nachricht tatsächlich an einen Server zu senden. Die Fetch API unterstützt ebenfallsAbortSignal: Es ist möglich, dasselbe Objekt sowohl für diefetch-Methode als auch denWritableStreamDefaultController zu verwenden.
const endpoint = "https://www.example.com/api"; // Fake URL for example purposeconst writingStream = new WritableStream({ async write(chunk, controller) { // Write to the server using the Fetch API const response = await fetch(endpoint, { signal: controller.signal, // We use the same object for both fetch and controller method: "POST", body: chunk, }); await response.text(); },});// Perform the writeconst writer = writingStream.getWriter();writer.write("Lorem ipsum test data");// Abort the write manuallyawait writer.abort("Manual abort!");Spezifikationen
| Specification |
|---|
| Streams> # ref-for-ws-default-controller-signal①> |