Start
Ende
Nach 2 Sekunden
Bisher lief dein JavaScript-Code meist Schritt für Schritt: Eine Zeile wird ausgeführt, dann die nächste. Der Fachbegriff dafür ist synchroner Code – jede Anweisung wartet, bis die vorherige fertig ist.
Im Web passiert aber oft etwas, das Zeit braucht: Daten von einem Server laden, auf eine Benutzeraktion warten oder einen Timer starten. Dafür braucht JavaScript Asynchronität – Aufgaben laufen im Hintergrund, während der Rest des Programms weiterarbeitet.
Synchron bedeutet: Der Code wartet. Erst wenn eine Aufgabe fertig ist, geht es weiter.
Asynchron bedeutet: Eine Aufgabe wird gestartet, aber der Code wartet nicht darauf. Stattdessen macht das Programm weiter und reagiert später auf das Ergebnis.
Ein einfaches Beispiel ist setTimeout(). Es startet eine Funktion nach einer bestimmten Zeit – ohne den restlichen Code anzuhalten:
1console.log("Start");
2
3setTimeout(function() {
4 console.log("Nach 2 Sekunden");
5}, 2000);
6
7console.log("Ende");Start
Ende
Nach 2 Sekunden
Beachte die Reihenfolge: "Ende" erscheint vor "Nach 2 Sekunden" – obwohl der Timer zuerst im Code steht.
Ohne Asynchronität würde der Browser bei langsamen Aufgaben einfrieren – Buttons reagieren nicht, Scrollen funktioniert nicht. Asynchroner Code sorgt dafür, dass die Webseite reaktionsfähig bleibt.
Typische asynchrone Aufgaben im Web sind zum Beispiel:
In den folgenden Kapiteln lernst du, wie du asynchronen Code in JavaScript sauber handhabst – mit Promises, async/await und fetch zum Laden von Daten aus dem Internet.
Im nächsten Kapitel lernst du: Promises