Die Antwort kommt an. Meine Variable bleibt trotzdem undefined.

Lernfragen und Praxis · 4 Antworten

STARTBEITRAG

#1
javascript
let name;
fetch('/api/user').then(r => r.json()).then(user => name = user.name);
console.log(name);

Im Netzwerk sehe ich die Antwort. In der Konsole undefined. Ich hab gefühlt drei Zeilen Code und schon die Kontrolle verloren. Wo muss das console.log hin?

0

Antworten

4
Antwort auf das Thema
#2

Häng es zum Test direkt in den letzten then-Block. Dein jetziges console.log läuft, bevor die Antwort verarbeitet wurde.

0
Antwort auf Antwort

Antwort auf #2 von semikolon

Häng es zum Test direkt in den letzten then-Block. Dein jetziges console.log läuft, bevor die Antwort verarbeitet wurde.
#3

okay, da steht der Name. Also kein kaputter JSON-Schlüssel, sondern falsche Reihenfolge. Wie bekomme ich den Wert dann aus einer Funktion zurück?

0
Antwort auf Antwort

Antwort auf #3 von miko

okay, da steht der Name. Also kein kaputter JSON-Schlüssel, sondern falsche Reihenfolge. Wie bekomme ich den Wert dann aus einer Funktion zurück?
#4

Die Funktion gibt ein Promise zurück. Mit async/await kannst du innerhalb der Funktion auf fetch und json warten. Auch der Aufrufer muss dann auf das Ergebnis warten; async macht daraus keinen synchronen Rückgabewert.

0
Antwort auf Antwort

Antwort auf #2 von semikolon

Häng es zum Test direkt in den letzten then-Block. Dein jetziges console.log läuft, bevor die Antwort verarbeitet wurde.
#5

Die Variable ist quasi schon zum Fototermin gerufen worden, während die Antwort noch im Bus sitzt. Ein setTimeout wäre dafür übrigens nur geraten, keine verlässliche Reihenfolge.

0