AbortController.signal
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since март 2019 г..
Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
**Примечание:**Это свойство только для чтения.
Свойство 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 (см. как он работает в живую).
Спецификации
Specification |
---|
DOM> # ref-for-dom-abortcontroller-signal②> |
Совместимость с браузерами
Loading…