1. Web
  2. Web-APIs
  3. WritableStreamDefaultController
  4. signal

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

WritableStreamDefaultController: signal-Eigenschaft

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2023 browserübergreifend verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die schreibgeschützte signal-Eigenschaft der WritableStreamDefaultController-Schnittstelle gibt das mit dem Controller verknüpfte AbortSignal zurück.

Wert

Ein AbortSignal-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, die writer.abort()-Methode aufzurufen und das Versprechen sofort abzulehnen.

js
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 write
const writer = writingStream.getWriter();
writer.write("Lorem ipsum test data");
// Abort the write manually
await writer.abort("Manual abort!");

Übertragen des AbortSignal auf die darunterliegende Ebene

In diesem Beispiel verwenden wir die Fetch API, um die Nachricht tatsächlich an einen Server zu senden. Die Fetch API unterstützt ebenfalls AbortSignal: Es ist möglich, dasselbe Objekt sowohl für die fetch-Methode als auch den WritableStreamDefaultController zu verwenden.

js
const endpoint = "https://www.example.com/api"; // Fake URL for example purpose
const 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 write
const writer = writingStream.getWriter();
writer.write("Lorem ipsum test data");
// Abort the write manually
await writer.abort("Manual abort!");

Spezifikationen

Spezifikation
Streams
# ref-for-ws-default-controller-signal1

Browser-Kompatibilität

Help improve MDN

Erfahren Sie, wie Sie beitragen können Diese Seite wurde automatisch aus dem Englischen übersetzt.

AltStyle によって変換されたページ (->オリジナル) /