--- title: AbortController slug: Web/API/AbortController translation_of: Web/API/AbortController ---
Интерфейс AbortController
представляет объект контроллера, который позволяет вам при необходимости обрывать один и более DOM запросов.
Вы можете создать новый объект AbortController
используя конструктор {{domxref("AbortController.AbortController()")}}. Взаимодействие с DOM запросами сделано с использованием объекта {{domxref("AbortSignal")}}.
AbortController
.В текущем фрагменте мы пытаемся скачать видео используя Fetch API.
Для начала мы создадим контроллер используя конструктор {{domxref("AbortController.AbortController","AbortController()")}}, затем возьмём ссылку на ассоциированный с ним объект {{domxref("AbortSignal")}} используя свойство {{domxref("AbortController.signal")}}.
При инициализации fetch запроса, мы передаём AbortSignal
в качестве параметра (смотрите ниже {signal}
). Это ассоциирует сигнал и контроллер с fetch запросом и даёт нам возможность остановить запрос вызовом метода {{domxref("AbortController.abort()")}}, что можно увидеть во втором addEventListener.
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('Download aborted'); }); function fetchVideo() { ... fetch(url, {signal}).then(function(response) { ... }).catch(function(e) { reports.textContent = 'Download error: ' + e.message; }) }
Примечание: При вызове abort()
, промис fetch()
будет отклонён с AbortError
.
Вы можете найти полный рабочий пример на GitHub — смотрите abort-api (и живой пример).
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('DOM WHATWG', '#interface-abortcontroller', 'AbortController')}} | {{Spec2('DOM WHATWG')}} | Начальное определение |
{{Compat("api.AbortController")}}