AbortSignal: метод throwIfAborted()
Базовая Широко доступна
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с марта 2019 года.
Примечание: Эта функция доступна в Web Workers.
Метод throwIfAborted() выбрасывает исключение сигнала прерывания reason, если сигнал был прерван; в противном случае он ничего не делает.
API, которому необходимо поддерживать прерывание, может принять объект AbortSignal и использовать throwIfAborted() для проверки и выброса исключения, когда сигнал события abort сработал.
Этот метод также может быть использован для прерывания операций в определенных точках кода, а не передавая сигнал в функции.
Синтаксис
throwIfAborted()
Параметры
Нет.
Возвращаемое значение
Нет (undefined).
Примеры
Примеры ниже взяты из спецификации.
Прерывание цикла опроса
Этот пример демонстрирует, как использовать throwIfAborted() для прерывания цикла опроса.
Рассмотрим асинхронную функцию waitForCondition(), которая вызывается с другой асинхронной функцией func, целевым значением targetValue и объектом AbortSignal. Метод сравнивает результат func с targetValue в цикле, возвращая значение, когда они совпадают.
async function waitForCondition(func, targetValue, { signal } = {}) {
while (true) {
signal?.throwIfAborted();
const result = await func();
if (result === targetValue) {
return;
}
}
}
На каждой итерации цикла мы используем throwIfAborted() для выброса сигнала прерывания reason, если операция была прервана (и в противном случае ничего не делает). Если сигнал прерван, это приведёт к отклонению промиса waitForCondition().
Спецификации
| Спецификация |
|---|
| DOM # ref-for-dom-abortsignal-throwifaborted① |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
throwIfAborted |
100 | 100 | 97 | 86 | 15.4 | 100 | 97 | 69 | 15.4 | 19.0 | 100 |
См. также
© 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/AbortSignal/throwIfAborted