Zurück zur Übersicht

Begriff

Async/Await

Programming Languages Concurrency S3
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Früher blockierte Code: file.read(). Das Programm fror ein, bis die Festplatte fertig war. Dann kamen Callbacks: file.read(() => { ... }). Führte zur "Callback Hell" (Verschachtelung des Grauens). Async/Await (erfunden von C#, populär durch JS/Python/Rust) ist syntaktischer Zucker. Du schreibst Code, der aussieht wie synchroner Code: let content = await file.read(); Aber unter der Haube blockiert er nicht. Wenn das await kommt, gibt die Funktion die Kontrolle ab. Der Prozessor macht andere Dinge (UI zeichnen, andere Requests). Wenn die Datei da ist, springt er zurück an diese Stelle. Es macht asynchrone Programmierung lesbar.

Merksatz: Ein Sprachkonstrukt, das es ermöglicht, asynchronen (nicht-blockierenden) Code in einer synchronen, linearen Struktur zu schreiben, indem es Promises/Futures hinter den Schlüsselwörtern async und await verbirgt.


Quick-Check

  1. Fehlerbehandlung?
    Einfach try { await ... } catch (e) { ... }. Viel besser als .catch(err => ...) bei Promises.
  2. Deadlocks?
    Möglich, aber seltener als bei Threads. Häufiger sind "Hangs", wenn man vergisst, ein Promise aufzulösen.
  3. Rust vs JS?
    In JS startet das Promise sofort (Hot). In Rust sind Futures "Lazy". Sie tun nichts, bis man sie "pollt" (.await).