Der Martin: Block Scope Problem

Beitrag lesen

Hallo,

ich hab folgende JavaScript Funktion, und möchte dass mein Array result, dass beim ersten console.log noch sauber mit Daten versorgt wird, diese Daten beim zweiten console.log noch hat.

du scheinst nicht zu verstehen, dass die beiden Aufrufe zeitlich in genau der umgekehrten Reihenfolge aufgerufen werden wie sie im Code stehen.

ich möchte die daten aus dem ersten console.log, returnen. wie mache ich das? :)

var re = getData();

-> re soll jetzt alle daten haben die ich beim ersten console.log habe, was muss ich machen?

Szenario: Du sitzt mit einer hübschen jungen Frau, die du in der Bar kennengelernt hast, im Zimmer deines Nobelhotels. Du greifst zum Telefon, rufst Room Service und bestellst eine Flasche Champagner, zwei Gläser und ein Schälchen Erdbeeren aufs Zimmer. Gerade in dem Moment, als du den Hörer wieder auflegst, fragt deine Begleitung schon mit einem etwas quengelnden Unterton: Wo ist denn nun der Schampus?

Was will ich damit sagen? - Mit dem Aufruf deiner Funktion getData() erklärst du dem Browser eigentlich nur, was du haben möchtest, außerdem gibst du ihm zwei Callback-Funktionen an, die er bei Erfolg bzw. Misserfolg aufrufen soll. Die Funktion kehrt sofort zurück, es ist noch nichts passiert. Du hast bisher bloß die Bestellung aufgegeben. Ebenso, wie du vom Anrufen allein noch keinen Champagner und keine Erdbeeren da stehen hast.
Erst in einer der beiden Callback-Funktionen kannst du auf das Ergebnis reagieren - also in done() die empfangenen Daten verarbeiten und nutzen, oder in fail() irgendwie mit dem Fehler umgehen. Dein übergeordneter Code, der getData() aufgerufen hat, ist aber inzwischen schon ganz woanders angekommen.

So long,
 Martin