Informatik Programmierung – Async und Promises
Karteikarten zum Thema „Informatik“ · 15 Karten · von atrio. Beispiele: Welche drei Zustände kann ein Promise annehmen? · Was bewirkt die Methode .then() auf…
Karten
15 KartenWelche drei Zustände kann ein Promise annehmen?
Rückseite
Pending (ausstehend), Fulfilled (erfüllt) und Rejected (abgelehnt). Ein Promise wechselt genau einmal von pending in einen finalen Zustand.
Was bewirkt die Methode .then() auf einem Promise?
Rückseite
Registriert Callback-Funktionen für den Erfüllungsfall. Gibt ein neues Promise zurück, was Verkettung ermöglicht. Der Rückgabewert des Callbacks wird zum Wert des neuen Promises.
Wie behandelt man Fehler in einer Promise-Kette zentral?
Rückseite
Ein .catch() am Ende der Kette fängt alle abgelehnten Promises und Fehler in vorherigen .then()-Callbacks auf. Fehlende .catch() führen zu Unhandled-Rejection-Warnungen.
Was ist der Unterschied zwischen Promise.all() und Promise.race()?
Rückseite
Promise.all() wartet, bis alle Promises erfüllt sind (oder einer scheitert). Promise.race() löst sofort aus, sobald der erste Promise sich entscheidet – egal ob erfüllt oder abgelehnt.
Wann wird Promise.allSettled() statt Promise.all() verwendet?
Rückseite
Wenn du Ergebnisse aller Promises brauchst, egal ob erfüllt oder abgelehnt. Liefert Array mit Status-Objekten {status: 'fulfilled'|'rejected', value|reason} für jedes Promise.
Wie wandelt man eine callback-basierte Funktion in ein Promise um?
Rückseite
Umhülle den Callback in new Promise((resolve, reject) => ...). Rufe resolve(result) bei Erfolg, reject(error) bei Fehler auf. Pattern nennt sich Promisification.
Was macht das Schlüsselwort await in einer async-Funktion?
Rückseite
Pausiert die Funktionsausführung, bis das Promise sich entscheidet. Gibt den erfüllten Wert zurück oder wirft den Ablehnungsgrund. Blockiert nicht den Haupt-Thread.
Wie behandelt man Fehler bei async/await syntaktisch?
Rückseite
Mit try/catch-Blöcken um await-Ausdrücke. catch fängt sowohl abgelehnte Promises als auch synchrone Fehler im try-Block. Ohne try/catch wird das äußere Promise abgelehnt.
Warum führt vergessene return in .then() zu Bugs?
Rückseite
Ohne return wird der Folge-Promise sofort mit undefined erfüllt. Die Kette läuft weiter, bevor die asynchrone Operation endet. Folge-Promises erhalten undefined statt des eigentlichen Werts.
Was ist der Unterschied zwischen sequentieller und paralleler Ausführung mit await?
Rückseite
Sequentiell: await promise1; await promise2 – wartet nacheinander. Parallel: const [r1, r2] = await Promise.all([p1, p2]) – startet beide gleichzeitig, nutzt Nebenläufigkeit.
Wie funktioniert der Event-Loop mit Microtasks (Promises)?
Rückseite
Nach jedem Makrotask (z. B. Click-Handler) leert der Event-Loop die gesamte Microtask-Queue (.then()-Callbacks, queueMicrotask) bevor der nächste Makrotask oder Rendering folgt.
Was bewirkt Promise.resolve(value) bei einem Thenable?
Rückseite
Entpackt Thenables (Objekte mit .then()-Methode) rekursiv, bis ein echter Wert oder Promise vorliegt. Ermöglicht Interoperabilität mit fremden Promise-Implementierungen.
Wann ist Top-Level-Await in ES-Modulen erlaubt?
Rückseite
Nur in ES-Modules (<script type="module">). Blockiert das Modul-Laden bis zur Auflösung. Nützlich für dynamische Imports oder Initialisierung vor Export.
Wie bricht man einen laufenden fetch-Request ab?
Rückseite
Erstelle AbortController, übergebe signal an fetch({signal}). Rufe controller.abort() auf – löst DOMException (AbortError) im Promise aus. Funktioniert nur bei fetch, nicht bei generischen Promises.
Wofür dient for await (const item of asyncIterable)?
Rückseite
Iteriert asynchron über Async Iterables (z. B. ReadableStream, Paginierte APIs). Wartet auf jedes next()-Promise, bevor der Schleifenkörper ausgeführt wird. Stoppt bei done: true.