AbortController: метод abort()
Базовая Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с марта 2019 года.
Примечание: Эта функция доступна в Web Workers.
Метод abort() интерфейса AbortController прерывает асинхронную операцию до её завершения. Он может прервать запросы fetch, чтение тела ответа или потоков.
Синтаксис
abort() abort(reason)
Параметры
reasonНеобязательно-
Причина прерывания операции, которая может быть любым значением JavaScript. Если не указано, причина устанавливается в «AbortError»
DOMException.
Возвращаемое значение
Ничего (undefined).
Примеры
В следующем фрагменте кода мы пытаемся загрузить видео с помощью Fetch API.
Сначала мы создаём контроллер с помощью конструктора AbortController(), а затем получаем ссылку на связанный объект AbortSignal с помощью свойства AbortController.signal.
Когда инициализируется запрос fetch, мы передаём AbortSignal в качестве опции в объекте опций запроса (объект {signal} ниже). Это связывает сигнал и контроллер с запросом fetch и позволяет нам прервать его, вызвав AbortController.abort(), как показано ниже во втором обработчике события.
const controller = new AbortController();
const signal = controller.signal;
const url = "video.mp4";
const downloadBtn = document.querySelector(".download");
const abortBtn = document.querySelector(".abort");
downloadBtn.addEventListener("click", fetchVideo);
abortBtn.addEventListener("click", () => {
controller.abort();
console.log("Download aborted");
});
function fetchVideo() {
fetch(url, { signal })
.then((response) => {
console.log("Download complete", response);
})
.catch((err) => {
console.error(`Download error: ${err.message}`);
});
}
Примечание: Когда вызывается abort(), обещание fetch() отклоняется с ошибкой Error типа DOMException, с именем AbortError.
Вы можете найти полный рабочий пример на GitHub; вы также можете посмотреть его в работе.
Спецификации
| Спецификация |
|---|
| DOM # ref-for-dom-abortcontroller-abortcontroller① |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
abort |
66 | 16 | 57 | 53 | 12.111.1Несмотря на то, чтоwindow.AbortController определён, он не действительно прерывает fetch запросы. См. баг 174980. |
66 | 57 | 47 | 12.211.3Несмотря на то, чтоwindow.AbortController определён, он не действительно прерывает fetch запросы. См. баг 174980. |
9.0 | 66 |
reason_parameter |
98 | 98 | 97 | 84 | 15.4 | 98 | 97 | 68 | 15.4 | 18.0 | 98 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort