Spec-Zone.ru › Web APIs

AbortController: свойство signal

Базовая версия Широко доступна

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с марта 2019 года.

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

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

Чтение только свойство signal интерфейса AbortController возвращает экземпляр объекта AbortSignal, который может быть использован для взаимодействия с асинхронной операцией и ее прерывания по мере необходимости.

Значение

Экземпляр объекта AbortSignal.

Примеры

В следующем фрагменте кода мы пытаемся загрузить видео с помощью API Fetch.

Сначала мы создаем контроллер с помощью конструктора AbortController(), затем получаем ссылку на связанный объект AbortSignal с помощью свойства AbortController.signal.

Когда инициируется запрос fetch, мы передаем AbortSignal в качестве параметра в объект опций запроса (ниже {signal}). Это связывает сигнал и контроллер с запросом fetch и позволяет прервать его, вызвав AbortController.abort(), как показано ниже во втором обработчике события.

const controller = new AbortController();
const signal = controller.signal;

const url = "video.mp4";
const downloadBtn = document.querySelector(".download");
const abortBtn = document.querySelector(".abort");

downloadBtn.addEventListener("click", fetchVideo);

abortBtn.addEventListener("click", () => {
  controller.abort();
  console.log("Download aborted");
});

function fetchVideo() {
  fetch(url, { signal })
    .then((response) => {
      console.log("Download complete", response);
    })
    .catch((err) => {
      console.error(`Download error: ${err.message}`);
    });
}

Примечание: Когда вызывается abort(), promise fetch() отклоняется с ошибкой AbortError.

Вы можете найти полный работающий пример на GitHub; вы также можете посмотреть его в действии.

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

Спецификация
DOM
# ref-for-dom-abortcontroller-signal②

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
signal 66 16 57 53 12.1
11.1Несмотря на то, что window.AbortController определена, она не прерывает запросы fetch. См. ошибку 174980.
66 57 47 12.2
11.3Несмотря на то, что window.AbortController определена, она не прерывает запросы fetch. См. ошибку 174980.
9.0 66

См. также

  • API Fetch

© 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/AbortController/signal

Spec-Zone.ru

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