AbortSignal: timeout() statische Methode
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die AbortSignal.timeout()
-statische Methode gibt ein AbortSignal
zurück, das nach einer angegebenen Zeit automatisch abgebrochen wird.
Das Signal bricht mit einer TimeoutError
-DOMException
nach Ablauf der Zeit ab.
Der Timeout basiert auf "aktiver" Zeit anstelle von verstrichener Zeit und wird effektiv pausiert, wenn der Code in einem angehaltenen Worker ausgeführt wird oder wenn sich das Dokument im Vor-Zurück-Cache ("bfcache") befindet.
Um mehrere Signale zu kombinieren, können Sie AbortSignal.any()
verwenden, z. B. um einen Download direkt entweder mit einem Timeout-Signal oder durch Aufrufen von AbortController.abort()
abzubrechen.
Syntax
AbortSignal.timeout(time)
Parameter
time
-
Die "aktive" Zeit in Millisekunden, bevor das zurückgegebene
AbortSignal
abbricht. Der Wert muss im Bereich von 0 bisNumber.MAX_SAFE_INTEGER
liegen.
Rückgabewert
Ein AbortSignal
.
Das Signal bricht ab und sein AbortSignal.reason
-Eigenschaft wird auf eine TimeoutError
-DOMException
gesetzt, wenn ein Timeout eintritt, oder auf eine AbortError
-DOMException
, wenn der Vorgang vom Benutzer ausgelöst wurde.
Beispiele
Unten ist ein Beispiel für eine Fetch-Operation, die nach 5 Sekunden fehlschlägt, falls sie nicht erfolgreich ist. Beachten Sie, dass dies auch fehlschlagen kann, wenn die Methode nicht unterstützt wird, wenn ein Browser-"Stop"-Button gedrückt wird oder aus einem anderen Grund.
const url = "https://path_to_large_file.mp4";
try {
const res = await fetch(url, { signal: AbortSignal.timeout(5000) });
const result = await res.blob();
// …
} catch (err) {
if (err.name === "TimeoutError") {
// This exception is from the abort signal
console.error("Timeout: It took more than 5 seconds to get the result!");
} else if (err.name === "AbortError") {
// This exception is from the fetch itself
console.error(
"Fetch aborted by user action (browser stop button, closing tab, etc.",
);
} else if (err.name === "TypeError") {
console.error("AbortSignal.timeout() method is not supported");
} else {
// A network error, or some other problem.
console.error(`Error: type: ${err.name}, message: ${err.message}`);
}
}
Spezifikationen
Specification |
---|
DOM # ref-for-dom-abortsignal-timeout① |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
timeout() static method |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
- Partial support
- Partial support
- Has more compatibility info.