AbortController.AbortController()

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

Конструктор AbortController() создаёт новый экземпляр объекта AbortController.

Синтаксис

var controller = new AbortController();

Параметры

Нет.

Примеры

 

В следующем фрагменте мы будем загружать видео используя 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
Определение 'AbortController()' в этой спецификации.
Живой стандарт Initial definition

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

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
AbortController() constructor
Экспериментальная
Chrome Полная поддержка 66Edge Полная поддержка 16Firefox Полная поддержка 57IE Нет поддержки НетOpera Полная поддержка 53Safari Полная поддержка 11.1WebView Android Полная поддержка 66Chrome Android Полная поддержка 66Firefox Android Полная поддержка 57Opera Android Полная поддержка 47Safari iOS Полная поддержка 11.3Samsung Internet Android Нет поддержки Нет

Легенда

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

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