TaskSignal: any() статический метод
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментальный: Это экспериментальная технология
Перед использованием в производстве внимательно проверьте таблицу совместимости с браузерами.
Примечание: Эта функция доступна в Web Workers.
Статический метод TaskSignal.any() принимает итерируемый набор объектов AbortSignal и возвращает TaskSignal. Возвращаемый сигнал задачи завершается, когда любой из сигналов прерывания завершается.
При прерывании сигнала задачи его свойство reason будет установлено в причину первого прерванного сигнала.
Синтаксис
TaskSignal.any(signals) TaskSignal.any(signals, init)
Параметры
signals-
Итерируемый набор (например,
Array) сигналов прерывания. initНеобязательный-
Содержит необязательные параметры конфигурации. В настоящее время определён только один параметр:
priorityНеобязательный-
Одно из следующих:
- Строка, являющаяся одной из
user-blocking,user-visibleиbackground. TaskSignal.
- Строка, являющаяся одной из
Возвращаемое значение
Экземпляр TaskSignal. Он будет прерван, когда первый переданный в signals сигнал будет прерван. В этом случае:
-
Его свойство
reasonбудет установлено в причину сигнала, который привел к прерыванию. -
Его свойство
priorityбудет определяться параметромpriority:- Если параметр
priorityбыл строкой, то он будет равен значению этой строки. - Если параметр
priorityбылTaskSignal, он будет равен значению свойстваpriorityэтого сигнала.
- Если параметр
Примеры
Использование TaskSignal.any()
Этот пример демонстрирует объединение сигнала от TaskController и сигнала таймаута от TaskSignal.timeout().
const cancelDownloadButton = document.getElementById("cancelDownloadButton");
const userCancelController = new TaskController({
priority: "user-visible",
});
cancelDownloadButton.addEventListener("click", () => {
userCancelController.abort();
});
// Timeout after 5 minutes
const timeoutSignal = TaskSignal.timeout(1_000 * 60 * 5);
// This signal will abort when either the user clicks the cancel button or 5 minutes is up whichever is sooner
const combinedSignal = TaskSignal.any([
userCancelController.signal,
timeoutSignal,
]);
try {
const res = await fetch(someUrlToDownload, {
// Stop the fetch when any of the
signal: combinedSignal,
});
const body = await res.blob();
// Do something with downloaded content
// ...
} catch (e) {
if (e.name === "AbortError") {
// Cancelled by the user
} else if (e.name === "TimeoutError") {
// Show user that download timed out
} else {
// Other error, e.g. network error
}
}
Спецификации
| Спецификация |
|---|
| Приоритетное планирование задач # dom-tasksignal-any |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
any_static |
116 | 116 | Нет | 102 | Нет | 116 | Нет | 78 | Нет | 24.0 | 116 |
См. также
© 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/TaskSignal/any_static