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 TaskSignal.any() statische Methode nimmt ein iterierbares Objekt von AbortSignal-Objekten und gibt ein TaskSignal zurück. Das zurückgegebene Task-Signal wird abgebrochen, wenn eines der Abbruchs-Signale abgebrochen wird.
Wenn das Task-Signal abgebrochen wird, wird die 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 Abbruchs-Signalen. initOptional-
Enthält optionale Konfigurationsparameter. Derzeit ist nur eine Eigenschaft definiert:
priorityOptional-
Eine der folgenden:
- Ein Prioritäten- String, der einer von
user-blocking,user-visibleundbackgroundist. - Ein
TaskSignal.
- Ein Prioritäten- String, der einer von
Rückgabewert
Eine TaskSignal-Instanz. Sie wird abgebrochen, wenn das erste in signals übergebene Signal abgebrochen wird. Wenn dies passiert:
-
Ihre
reason-Eigenschaft wird auf den Grund des Signals gesetzt, das dieses Signal zum Abbrechen gebracht hat. -
Ihre
priority-Eigenschaft wird durch denpriority-Parameter bestimmt:- Wenn der
priority-Parameter ein String war, wird dieser als Wert verwendet. - Wenn der
priority-Parameter einTaskSignalwar, wird der Wert derpriority-Eigenschaft dieses Signals verwendet.
- Wenn der
Beispiele
>Verwendung von TaskSignal.any()
Dieses Beispiel zeigt die Kombination eines Signals von einem TaskController und eines Timeout-Signals 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") {
// Canceled 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> |