Spec-Zone.ru › Web APIs

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API