AbortSignal: any() statische Methode
Baseline
2024
Newly available
Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die statische Methode AbortSignal.any() nimmt ein iterierbares Objekt von Abbruchsignalen entgegen und gibt ein AbortSignal zurück. Das zurückgegebene Abbruchsignal wird abgebrochen, wenn eines der Abbruchsignale im Eingabeiterierbaren abgebrochen wird. Der Abbruchgrund wird auf den Grund des ersten Signals gesetzt, das abgebrochen wird. Wenn eines der gegebenen Abbruchsignale bereits abgebrochen ist, wird auch das zurückgegebene AbortSignal abgebrochen.
Syntax
AbortSignal.any(iterable)
Parameter
iterable-
Ein iterierbares Objekt (wie ein
Array) von Abbruchsignalen.
Rückgabewert
Ein AbortSignal, das:
- Bereits abgebrochen ist, wenn eines der gegebenen Abbruchsignale bereits abgebrochen ist. Der Grund des zurückgegebenen
AbortSignalwird bereits auf denreasondes ersten bereits abgebrochenen Abbruchsignals gesetzt. - Asynchron abgebrochen, wenn irgendein Abbruchsignal im
iterableabbricht. Derreasonwird auf den Grund des ersten abgebrochenen Abbruchsignals gesetzt.
Beispiele
>Verwendung von AbortSignal.any()
Dieses Beispiel zeigt die Kombination aus einem Signal von einem AbortController und einem Timeout-Signal von AbortSignal.timeout.
const cancelDownloadButton = document.getElementById("cancelDownloadButton");
const userCancelController = new AbortController();
cancelDownloadButton.addEventListener("click", () => {
userCancelController.abort();
});
// Timeout after 5 minutes
const timeoutSignal = AbortSignal.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 = AbortSignal.any([
userCancelController.signal,
timeoutSignal,
]);
try {
const res = await fetch(someUrlToDownload, {
// Stop the fetch when any of the signals aborts
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 |
|---|
| DOM> # dom-abortsignal-any> |
Browser-Kompatibilität
Loading…