Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

TaskSignal: any() statische Methode

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

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 Abbruchs-Signale abgebrochen wird.

Wenn das Task-Signal abgebrochen wird, wird die reason-Eigenschaft auf den Grund des ersten abgebrochenen Signals gesetzt.

Syntax

js
TaskSignal.any(signals)
TaskSignal.any(signals, init)

Parameter

signals

Ein iterierbares Objekt (wie ein Array) von Abbruchs-Signalen.

init Optional

Enthält optionale Konfigurationsparameter. Derzeit ist nur eine Eigenschaft definiert:

priority Optional

Eine der folgenden:

Rückgabewert

Eine TaskSignal-Instanz. Sie wird abgebrochen, wenn das erste in signals übergebene Signal abgebrochen wird. Wenn dies passiert:

  • Ihre reason-Eigenschaft wird auf den Grund des Signals gesetzt, das dieses Signal zum Abbrechen gebracht hat.

  • Ihre priority-Eigenschaft wird durch den priority-Parameter bestimmt:

    • Wenn der priority-Parameter ein String war, wird dieser als Wert verwendet.
    • Wenn der priority-Parameter ein TaskSignal war, wird der Wert der priority-Eigenschaft dieses Signals verwendet.

Beispiele

Verwendung von TaskSignal.any()

Dieses Beispiel zeigt die Kombination eines Signals von einem TaskController und eines Timeout-Signals von TaskSignal.timeout().

js
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") {
    // Canceled by the user
  } else if (e.name === "TimeoutError") {
    // Show user that download timed out
  } else {
    // Other error, e.g. network error
  }
}

Spezifikationen

Spezifikation
Prioritized Task Scheduling
# dom-tasksignal-any

Browser-Kompatibilität

Siehe auch