TaskSignal: any() statische Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
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 Abbruchsignale abgebrochen wird.
Wenn das Task-Signal 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. init
Optional-
Enthält optionale Konfigurationsparameter. Derzeit ist nur eine Eigenschaft definiert:
priority
Optional-
Eine der folgenden Optionen:
- Ein String, der einer von
user-blocking
,user-visible
undbackground
ist. - Ein
TaskSignal
.
- Ein String, der einer von
Rückgabewert
Eine TaskSignal
-Instanz. Sie wird abgebrochen, wenn das erste in signals
übergebene Signal abgebrochen wird. In diesem Fall:
-
Wird ihre
reason
-Eigenschaft auf den Grund gesetzt, der dieses Signal zum Abbruch gebracht hat. -
Wird ihre
priority
-Eigenschaft durch denpriority
-Parameter bestimmt:- Wenn der
priority
-Parameter ein String war, wird er der Wert des Strings sein. - Wenn der
priority
-Parameter einTaskSignal
war, wird er der Wert derpriority
dieses Signals sein.
- Wenn der
Beispiele
Verwendung von TaskSignal.any()
Dieses Beispiel zeigt 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
Specification |
---|
Prioritized Task Scheduling # dom-tasksignal-any |
Browser-Kompatibilität
BCD tables only load in the browser