TaskSignal: any() statische Methode
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die statische Methode TaskSignal.any() nimmt ein iterierbares Objekt von AbortSignal-Objekten und gibt ein TaskSignal zurück. Das zurückgegebene TaskSignal wird abgebrochen, wenn eines der Abbruchsignale abgebrochen wird.
Wenn das TaskSignal abgebrochen wird, wird seine reason-Eigenschaft auf den Grund des ersten abgebrochenen Signals gesetzt.
Syntax
TaskSignal.any(signals)
TaskSignal.any(signals, init)
Parameter
signals-
Ein iterierbares Objekt (wie ein
Array) von Abbruchsignalen. initOptional-
Enthält optionale Konfigurationsparameter. Derzeit ist nur eine Eigenschaft definiert:
priorityOptional-
Eine der folgenden:
- Ein Priorität String, der eine der Optionen
user-blocking,user-visibleundbackgroundist. - Ein
TaskSignal.
- Ein Priorität String, der eine der Optionen
Rückgabewert
Eine TaskSignal Instanz. Sie wird abgebrochen, wenn das erste Signal im signals Parameter abgebrochen wird. Wenn dies geschieht:
-
Seine
reason-Eigenschaft wird auf den Grund des Signals gesetzt, das dieses Signal zum Abbruch veranlasst hat. -
Seine
priority-Eigenschaft wird durch denpriorityParameter bestimmt:- Wenn der
priorityParameter ein String war, wird er der Wert dieses Strings sein. - Wenn der
priorityParameter einTaskSignalwar, wird er der Wert derpriority-Eigenschaft dieses Signals sein.
- Wenn der
Beispiele
>Verwendung von TaskSignal.any()
Dieses Beispiel demonstriert die Kombination eines Signals von einem TaskController und eines Zeitüberschreitungssignals von 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
}
}
Spezifikationen
| Spezifikation |
|---|
| Prioritized Task Scheduling> # dom-tasksignal-any> |