JavaScript Daten von API abfragen?
Ich habe ein JavaScript Script, in dem ich ganz am Anfang einer Variable die Daten von einem API Request zuweisen muss. Die Daten sollen also in der Variable gespeichert werden und dann der restliche Code ausgeführt werden. Ich möchte, dass die Zuweisung so aussieht:
let data = loadData() | {/*default json*/}
Die Daten müssen da sein bevor der restliche Code ausgeführt wird, da ich sie in einer funktion im onload teil brauche.
1 Antwort
Du musst dein Code reaktiv aufbauen. Wenn deine JavaScript Datei lädt und ausgeführt wird, sind die JSON nicht bekannt. Das Laden der Daten benötigt etwas Zeit. So wie JavaScript ausgeführt wird, blockiert die Zeile Code nicht, während die Daten abgerufen werden. Du musst also mit dem asynchronen Ausführen arbeiten.
Bei deinem HTTP Request wirst du wahrscheinlich ein Event haben, der irgendwann mit den JSON Daten ausgeführt wird. Ab hier kannst du mit dem JSON arbeiten.
Das einfachst wird sein, wenn du dein restlichen Code in eine oder mehrere Funktionen auslagerst. Die "main" Methode kannst du dann ausführen, wenn die Daten angekommen sind.
Falls zum JavaScript noch eine Webseite dazugehört, musst du diese Zeitdifferenz bedenken. Du könntest zu Beginn ein "Loading..." anzeigen und den Inhalt dann sinnvoll austauschen.
Dein ursprünglicher Wunsch könnte höchstens so aussehen:
let data = await loadData()
Das await Keyword gehört zur async Entwicklung von JavaScript. Die loadData Methode kann erstmal nur ein Promise Objekt zurückgeben. Ein Promise ist wie eine Überraschung, die in der Zukunft erfüllt werden kann. Es kann der gewünschte Wert oder auch ein Fehler dabei herauskommen. Mit await Keyword kannst du auf die Antwort warten. Anderer Code kann in der Zwischenzeit ausgeführt werden.
Falls du diesen Weg gehen möchtest, solltest du dich mit Thema Promise, await und async im Bereich JavaScript informieren.