AbortSignal
        
        
          
                Baseline
                
                  Widely available
                
                 *
              
        
        
        
          
                
              
                
              
                
              
        
        
      
      This feature is well established and works across many devices and browser versions. It’s been available across browsers since апрель 2018 г..
* Some parts of this feature may have varying levels of support.
Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
AbortSignal интерфейс представляет собой объект сигнала, который позволяет вам общаться с DOM запросом (например, Fetch) и прервать его при необходимости с помощью объекта AbortController.
Свойства
AbortSignal также наследует свойства от своего родительского интерфейса, EventTarget.
AbortSignal.abortedТолько для чтения- 
Это
Boolean, который указывает, отменён ли запрос(ы), с которым связывался сигнал, отменён (true) или нет (false). 
Обработчики событий
AbortSignal.onabort- 
Вызывается когда происходит событие
abort, т.е. когда DOM запрос(ы), с которым связывался сигнал, отменён. 
Методы
AbortSignal наследует методы от родительского интерфейса, EventTarget.
Примеры
В следующем фрагменте мы будем загружать видео используя 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.
Предупреждение:
Текущая версия Firefox отклоняет промис с DOMException
Вы можете найти полный рабочий пример на GitHub — см. abort-api (см. как он работает в живую).
Спецификации
| Specification | 
|---|
| DOM> # interface-AbortSignal>  | 
            
Совместимость с браузерами
Loading…
Смотрите также
- Fetch API
 - Abortable Fetch by Jake Archibald