Spec-Zone.ru › Web APIs

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

Базовая версия 2024
Новая возможность

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

  • Узнать больше
  • Показать полную совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Веб-воркерах.

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

Синтаксис

AbortSignal.any(iterable)

Параметры

iterable

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

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

AbortSignal, который:

  • Уже завершен, если любой из заданных сигналов прерывания уже завершен. Причина завершения возвращаемого AbortSignal будет установлена в причину первого сигнала прерывания, который уже был завершен.
  • Асинхронно завершен, когда любой сигнал прерывания в iterable завершается. Причина завершения будет установлена в причину первого сигнала прерывания, который завершился.

Примеры

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

Этот пример демонстрирует объединение сигнала от AbortController и сигнала таймаута от AbortSignal.timeout.

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

const userCancelController = new AbortController();

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

// Timeout after 5 minutes
const timeoutSignal = AbortSignal.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 = AbortSignal.any([
  userCancelController.signal,
  timeoutSignal,
]);

try {
  const res = await fetch(someUrlToDownload, {
    // Stop the fetch when any of the signals aborts
    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
# dom-abortsignal-any

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

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

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

Spec-Zone.ru

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