🌐 Modernes JavaScript

JS 06: Async/Await & REST-APIs (Fetch)

Schreibe asynchronen Code so lesbar und linear wie synchronen Code mit async, await und try/catch.

📖 1. Warum Async/Await?

Mit async/await (ES2017) gehört unübersichtliches Promise-Chaining der Vergangenheit an. Asynchroner Code liest sich nun von oben nach unten wie ganz normaler, synchroner Code.

📚 Die Buch-Lese-Analogie

Vorher (Callbacks & .then()): Wie ein Buch, bei dem jedes Kapitel auf Fußnoten verweist („Lies auf Seite 80 weiter, um die Antwort zu finden“).

Jetzt (Async/Await): Du liest das Buch ganz entspannt Zeile für Zeile von oben nach unten. Bei await pausiert der Erzähler kurz, holt die Information ab und liest genau an der Stelle flüssig weiter!

⚖️ 2. Gegenüberstellung: Promises vs. Async/Await

⏳ Früher: Promise .then() Chaining

function ladeProfil(id) {
  fetch(`/api/user/${id}`)
    .then(res => {
      if (!res.ok) throw new Error("404");
      return res.json();
    })
    .then(user => {
      console.log("Name:", user.name);
    })
    .catch(err => {
      console.error("Fehler:", err);
    });
}

✨ Heute: Modernes Async/Await

async function ladeProfil(id) {
  try {
    const res = await fetch(`/api/user/${id}`);
    if (!res.ok) throw new Error("404");

    const user = await res.json();
    console.log("Name:", user.name);
  } catch (err) {
    console.error("Fehler:", err);
  }
}

🌐 3. REST-APIs konsumieren

Typischer 2-Schritt-Ablauf beim Abrufen einer JSON-REST-API:

Schritt 1
HTTP-Request senden & Statuscode prüfen:

const res = await fetch(url);
if (!res.ok) throw new Error(`HTTP-Fehler: ${res.status}`);

Schritt 2
JSON-Body asynchron auslesen:

const daten = await res.json();

🎯 Aufgaben & Checkliste (Subgoals)

💡 Lösungstipps & Hilfestellung
  • Deklariere jede asynchrone Funktion mit async function ....
  • Prüfe vor await res.json() immer mit if (!res.ok) auf HTTP-Fehler.
  • Im try / catch-Block fängst du fehlgeschlagene Promises sauber ab und lieferst den Fallback-Wert.
← Zurück zu Modul 05 💻 In Web-IDE öffnen →