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 AbortSignal.any() statische Methode nimmt ein Iterable von Abbruchsignalen und gibt ein AbortSignal zurück. Das zurückgegebene Abbruchsignal wird abgebrochen, wenn eines der Eingabe-Abbruchsignale abgebrochen wird. Der Abbruchgrund wird auf den Grund des ersten Signals gesetzt, das abgebrochen wird. Wenn eines der angegebenen Abbruchsignale bereits abgebrochen ist, wird auch das zurückgegebene AbortSignal abgebrochen.

Syntax

js
AbortSignal.any(iterable)

Parameter

iterable

Ein Iterable (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 AbortSignal wird bereits auf den Grund des ersten Abbruchsignals gesetzt, das bereits abgebrochen war.
  • Asynchron abgebrochen wird, wenn ein Abbruchsignal in iterable abbricht. Der Grund wird auf den Grund des ersten Abbruchsignals gesetzt, das abgebrochen wird.

Beispiele

Verwendung von AbortSignal.any()

Dieses Beispiel demonstriert die Kombination eines Signals von einem AbortController und eines Timeout-Signals von AbortSignal.timeout.

js
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

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
any() static method

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Has more compatibility info.