AbortController.AbortController()

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

Конструктор 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

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

BCD tables only load in the browser

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