Array mit Objekten zurückgeben

  • Hallo,

    zunächst erstmal bin ich noch ziemlich neu in der JavaScript Welt unterwegs.


    Ich möchte über Javascript Daten aus Firebase laden.

    Hierfür wird über eine Funktion eine weitere Funktion aufgerufen, die die Daten zurückgeben soll. Nur das funktioniert leider nicht so wirklich.


    So sieht das Konstrukt aus:


    Code
    //global definiert
    var listKunde = [];


    Code
    function init() {
      var alleDaten = readData();
     // Weiterer Code der erst nach kompletten Durchlauf von readData() ausgeführt werden soll




    Ich sehe hier zwei Probleme:

    Zum einen weiß ich nicht genau, wie ich die Liste am besten zurückgeben kann. Am Ende der Funktion wird eine leere Liste zurückgeliefert. Wenn ich die Liste in der zweiten forEach-Schleife zurückgebe, dann wird die Liste ja bereits nach dem Laden eines Objekts zurückgegeben (ich möchte aber alle Objekte auf einmal zurückgeben (gemäß Pseudocode innerhalb der zweiten forEach-Schleife).

    Desweiteren erfolgt das Laden der Objekte zeitversetzt. Das soll heißen, dass der Code nach dem Funktionsaufruf noch vor dem Laden der Objekte stattfindet. Ich möchte aber, dass der Code erst weiter fortgesetzt werden soll, wenn alle Objekte geladen wurden. Ich habe es mit asynch function readData(){ ... versucht, aber das hat nicht geholfen. Wie stelle ich das am besten an bzw. wo müsste ich an meinem Code anpassungen vornehmen.

    Ich bedanke mich. =)


    Liebe Grüße

  • Ich habe zwar keine Ahnung von Firebase aber mit solchen asynchronen Vorgängen ist es immer gleich: Dort wo Du die Liste generierst, bist Du nicht direkt in der Funktion readData sonden in der anonymen Funktion des then. Notierst Du dort return, verlässt Du letztere Funktion mit diesem Rückgabewert aber nicht readData. Du musst bei dem asynchronen Konzept bleiben und deinen weiteren Code in der anonymen Funktion notieren und ausführen. Ggf. damit es eleganter ist und falls die Funktion readData universeller sein soll, diesen Code in einer Funktion als Callback übergeben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!