WritableStreamDefaultController: свойство signal
Примечание: Эта функция доступна в Потоках Web Workers.
Чрезвычайно-только свойство signal интерфейса WritableStreamDefaultController возвращает AbortSignal, связанный с контроллером.
Значение
Объект AbortSignal.
Примеры
Прерывание длительной операции записи
В этом примере мы моделируем медленную операцию с использованием локального приемника: мы ничего не делаем, когда данные записываются, но ожидаем секунду. Это даёт достаточно времени, чтобы вызвать метод writer.abort() и немедленно отклонить промис.
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!");
Передача AbortSignal на нижний уровень
В этом примере мы используем Fetch API для отправки сообщения на сервер. Fetch API также поддерживает AbortSignal: можно использовать один и тот же объект как для метода fetch , так и для WritableStreamDefaultController.
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!");
Спецификации
| Спецификация |
|---|
| Потоки # ref-for-ws-default-controller-signal① |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
signal |
98 | 98 | 100 | 84 | 16.4 | 98 | 100 | 68 | 16.4 | 18.0 | 98 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WritableStreamDefaultController/signal