AbortController.signal

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

Примечание: Это свойство только для чтения.

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

Синтаксис

var signal = abortController.signal;

Значение

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

Примеры

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

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

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

 

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

var downloadBtn = document.querySelector('.download');
var abortBtn = document.querySelector('.abort');

downloadBtn.addEventListener('click', fetchVideo);

abortBtn.addEventListener('click', function() {
  controller.abort();
  console.log('Загрузка прервана');
});

function fetchVideo() {
  ...
  fetch(url, {signal}).then(function(response) {
    ...
  }).catch(function(e) {
    reports.textContent = 'Ошибка загрузки: ' + e.message;
  })
}

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

Вы можете найти полный рабочий пример на GitHub — см. abort-api (см. как он работает в живую).

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

Спецификация Статус Комментарий
DOM
Определение 'signal' в этой спецификации.
Живой стандарт Initial definition

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

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
signal
Экспериментальная
Chrome Полная поддержка 66Edge Полная поддержка 16Firefox Полная поддержка 57IE Нет поддержки НетOpera Полная поддержка 53Safari Полная поддержка 12.1
Полная поддержка 12.1
Частичная поддержка 11.1
Замечания
Замечания Even though window.AbortController is defined, it doesn't really abort fetch requests. See bug 174980.
WebView Android Полная поддержка 66Chrome Android Полная поддержка 66Firefox Android Полная поддержка 57Opera Android Полная поддержка 47Safari iOS Полная поддержка 12.2
Полная поддержка 12.2
Частичная поддержка 11.3
Замечания
Замечания Even though window.AbortController is defined, it doesn't really abort fetch requests. See bug 174980.
Samsung Internet Android Полная поддержка 9.0

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Смотрите замечания реализации.
Смотрите замечания реализации.

Смотрите также