Spec-Zone.ru › Web APIs

TaskSignal: any() статический метод

Ограниченная доступность

Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Экспериментальный: Это экспериментальная технология
Перед использованием в производстве внимательно проверьте таблицу совместимости с браузерами.

Примечание: Эта функция доступна в Web Workers.

Статический метод TaskSignal.any() принимает итерируемый набор объектов AbortSignal и возвращает TaskSignal. Возвращаемый сигнал задачи завершается, когда любой из сигналов прерывания завершается.

При прерывании сигнала задачи его свойство reason будет установлено в причину первого прерванного сигнала.

Синтаксис

TaskSignal.any(signals)
TaskSignal.any(signals, init)

Параметры

signals

Итерируемый набор (например, Array) сигналов прерывания.

init Необязательный

Содержит необязательные параметры конфигурации. В настоящее время определён только один параметр:

priority Необязательный

Одно из следующих:

  • Строка, являющаяся одной из user-blocking, user-visible и background.
  • TaskSignal.

Возвращаемое значение

Экземпляр TaskSignal. Он будет прерван, когда первый переданный в signals сигнал будет прерван. В этом случае:

  • Его свойство reason будет установлено в причину сигнала, который привел к прерыванию.

  • Его свойство priority будет определяться параметром priority:

    • Если параметр priority был строкой, то он будет равен значению этой строки.
    • Если параметр priority был TaskSignal, он будет равен значению свойства priority этого сигнала.

Примеры

Использование TaskSignal.any()

Этот пример демонстрирует объединение сигнала от TaskController и сигнала таймаута от TaskSignal.timeout().

const cancelDownloadButton = document.getElementById("cancelDownloadButton");

const userCancelController = new TaskController({
  priority: "user-visible",
});

cancelDownloadButton.addEventListener("click", () => {
  userCancelController.abort();
});

// Timeout after 5 minutes
const timeoutSignal = TaskSignal.timeout(1_000 * 60 * 5);

// This signal will abort when either the user clicks the cancel button or 5 minutes is up whichever is sooner
const combinedSignal = TaskSignal.any([
  userCancelController.signal,
  timeoutSignal,
]);

try {
  const res = await fetch(someUrlToDownload, {
    // Stop the fetch when any of the
    signal: combinedSignal,
  });
  const body = await res.blob();
  // Do something with downloaded content
  // ...
} catch (e) {
  if (e.name === "AbortError") {
    // Cancelled by the user
  } else if (e.name === "TimeoutError") {
    // Show user that download timed out
  } else {
    // Other error, e.g. network error
  }
}

Спецификации

Спецификация
Приоритетное планирование задач
# dom-tasksignal-any

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
any_static 116 116 Нет 102 Нет 116 Нет 78 Нет 24.0 116

См. также

  • AbortSignal.any()

© 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/TaskSignal/any_static

Spec-Zone.ru

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