WritableStreamDefaultController: signal-Eigenschaft
Hinweis: Dieses Feature ist verfügbar in Web Workers.
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.
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.
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
Specification |
---|
Streams Standard # ref-for-ws-default-controller-signal① |
Browser-Kompatibilität
BCD tables only load in the browser