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

AbortSignal интерфейс представляет собой объект сигнала, который позволяет вам общаться с DOM запросом (например, Fetch) и прервать его при необходимости с помощью объекта AbortController.

Свойства

AbortSignal также наследует свойства от своего родительского интерфейса, EventTarget.

AbortSignal.aborted Только для чтения
Это Boolean, который указывает, отменен ли запрос(ы), с которым связывался сигнал, отменён (true) или нет (false).

Обработчики событий

AbortSignal.onabort
Вызывается когда происходит событие abort, т.е. когда DOM запрос(ы), с которым связывался сигнал, отменён.

Методы

AbortSignal наследует методы от родительского интерфейса, EventTarget.

Примеры

В следующем фрагменте мы будем загружать видео используя 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.

Текущая версия Firefox отклоняет обещание с DOMException

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

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

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

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

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidEdge MobileFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
AbortSignal
Экспериментальная
Chrome Полная поддержка 66Edge Полная поддержка 16Firefox Полная поддержка 57IE Нет поддержки НетOpera Полная поддержка 53Safari Полная поддержка 11.1WebView Android Полная поддержка 66Chrome Android Полная поддержка 66Edge Mobile Нет поддержки НетFirefox Android Полная поддержка 57Opera Android Полная поддержка 53Safari iOS Полная поддержка 11.1Samsung Internet Android Нет поддержки Нет
aborted
Экспериментальная
Chrome Полная поддержка 66Edge Полная поддержка 16Firefox Полная поддержка 57IE Нет поддержки НетOpera Полная поддержка 53Safari Полная поддержка 11.1WebView Android Полная поддержка 66Chrome Android Полная поддержка 66Edge Mobile Нет поддержки НетFirefox Android Полная поддержка 57Opera Android Полная поддержка 53Safari iOS Полная поддержка 11.1Samsung Internet Android Нет поддержки Нет
onabort
Экспериментальная
Chrome Полная поддержка 66Edge Полная поддержка 16Firefox Полная поддержка 57IE Нет поддержки НетOpera Полная поддержка 53Safari Полная поддержка 11.1WebView Android Полная поддержка 66Chrome Android Полная поддержка 66Edge Mobile Нет поддержки НетFirefox Android Полная поддержка 57Opera Android Полная поддержка 53Safari iOS Полная поддержка 11.1Samsung Internet Android Нет поддержки Нет

Легенда

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

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

Метки документа и участники

Внесли вклад в эту страницу: VerZsuT
Обновлялась последний раз: VerZsuT,