0Pricing
JavaScript Academy · Lektion

Timeouts und Abbrechen mit AbortController

Timeouts zu asynchronem Code hinzufügen und Arbeit mit AbortController abbrechen; Signale in Tasks einbinden, damit diese frühzeitig stoppen

Timeouts und Abbrechen mit AbortController ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des JavaScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der JavaScript Academy-Kurs umfasst insgesamt 3 Lektionen.

Warum Timeouts und Abbrüche?

Ziel: Beenden Sie lang laufende Aufgaben sicher.

  • Einen einfachen Timeout hinzufügen
  • AbortController verwenden
  • signal mit Ihrer Aufgabe verbinden
  • Timer aufräumen
Timeouts und Abbrechen mit AbortController — Illustration 1

Signalüberwachte Aufgabe

Erstellen Sie Aufgaben, die auf signal.abort reagieren und den Timer beim Abbrechen stoppen.

// Fake fetch that respects AbortSignal
function fakeFetch(ms, value, signal) {
  return new Promise(function (resolve, reject) {
    // Abort handler
    function onAbort() {
      clearTimeout(t);
      reject(new Error("aborted"));
    }

    // If already aborted
    if (signal && signal.aborted) {
      return reject(new Error("aborted"));
    }

    // Finish timer
    const t = setTimeout(function () {
      if (signal) {
        signal.removeEventListener("abort", onAbort);
      }
      resolve(value);
    }, ms);

    // Listen for abort
    if (signal) {
      signal.addEventListener("abort", onAbort);
    }
  });
}

fakeFetch(5, "OK").then(function (v) {
  console.log("fakeFetch:", v);
});
Timeouts und Abbrechen mit AbortController — Illustration 2

Abort in Aktion

Erstellen Sie einen Controller, übergeben Sie sein signal und rufen Sie zum Abbrechen abort() auf.

// AbortController cancels signal-aware tasks
const controller = new AbortController();

fakeFetch(20, "Too slow", controller.signal)
  .then(function (v) {
    console.log("done:", v);
  })
  .catch(function (e) {
    console.log("catch:", e.message);
  });

// Abort after a short delay
setTimeout(function () {
  controller.abort();
  console.log("aborted");
}, 5);
Timeouts und Abbrechen mit AbortController — Illustration 3

Timeout-Wrapper

Verwenden Sie Promise.race, um die Promise abzulehnen, wenn die Aufgabe zu lange dauert; löschen Sie den Timer in finally.

// Add a timeout to any Promise with Promise.race
function withTimeout(promise, ms) {
  return Promise.race([
    promise,
    new Promise(function (_resolve, reject) {
      const t = setTimeout(function () {
        reject(new Error("timeout"));
      }, ms);
      // Small trick: clear timer when the main promise settles
      promise.finally(function () { clearTimeout(t); });
    })
  ]);
}

// Demo: this will time out
withTimeout(fakeFetch(30, "late"), 10)
  .then(function (v) { console.log("value:", v); })
  .catch(function (e) { console.log("timeout:", e.message); });
Timeouts und Abbrechen mit AbortController — Illustration 4

Timeout und Abort zusammen

Wenn der Timeout zuerst greift, rufen Sie abort() auf, damit die zugrunde liegende Arbeit frühzeitig beendet wird.

// Combine: abort if timeout fires
async function fetchWithTimeout(msWork, msTimeout) {
  const c = new AbortController();

  const task = fakeFetch(msWork, "data", c.signal);

  // If timeout wins, abort the task
  try {
    const result = await withTimeout(task, msTimeout);
    return result;
  } catch (e) {
    c.abort();
    throw e;
  }
}

fetchWithTimeout(25, 10)
  .then(function (v) { console.log("got:", v); })
  .catch(function (e) { console.log("failed:", e.message); });
Timeouts und Abbrechen mit AbortController — Illustration 5

Tipps und Checkliste

Tipps:

  • Löschen Sie Timer immer in finally.
  • Übergeben Sie signal an Aufgaben und prüfen Sie signal.aborted.
  • Verwenden Sie bevorzugt einen Controller pro Anfrage.
Timeouts und Abbrechen mit AbortController — Illustration 6

Quiz zu den Grundlagen von AbortController

Kurzer Check: Abbruchmuster

Timeouts und Abbrechen mit AbortController — Illustration 7

Zusammenfassung

Zusammenfassung: Sie haben eine signalfähige Aufgabe erstellt, sie mit AbortController abgebrochen, über Promise.race ein Timeout hinzugefügt und beides für sichere vorzeitige Beendigungen kombiniert.

Timeouts und Abbrechen mit AbortController — Illustration 8

Häufig gestellte Fragen

Ist die Lektion „Timeouts und Abbrechen mit AbortController“ kostenlos?

Ja — der vollständige Text von „Timeouts und Abbrechen mit AbortController“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des JavaScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der JavaScript Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „Timeouts und Abbrechen mit AbortController“?

Timeouts zu asynchronem Code hinzufügen und Arbeit mit AbortController abbrechen; Signale in Tasks einbinden, damit diese frühzeitig stoppen Du übst JavaScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um JavaScript Academy zu starten?

Keine Vorkenntnisse erforderlich. JavaScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 3.

Wie lange dauert die Lektion „Timeouts und Abbrechen mit AbortController“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser JavaScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede JavaScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Async-Funktionen schreiben; try/catch; parallel vs. sequenziell
  2. Timeouts und Abbrechen mit AbortController
  3. Muster für Wiederholungen und Backoff
← Zurück zu JavaScript Academy