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

js
AbortSignal.timeout(time)

Parameter

time

Die "aktive" Zeit in Millisekunden, bevor das zurückgegebene AbortSignal abbricht. Der Wert muss im Bereich von 0 bis Number.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.

js
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 GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
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.