For-Schleife holt Items von Redis Delay

Ich verwende Node.js w / node_redis und durchlaufe ein Objekt, suche Daten in Redis und gebe dann Ergebnisse zurück.

Ich habe es so eingerichtet:

<code>        for (var key in items) {
            if (items.hasOwnProperty(key)) {

                    app.client.llen(items[key].id+'_click', function(err, total) {
                        items[key].total = total;

                    });
            }
        }

       callback(items);
</code>

Das Problem ist, dass es eine Schleife durchläuft, bevor der Anruf zur Wiederholung abgeschlossen wird. Der Rückruf wird also aufgerufen, bevor der Gesamtwert tatsächlich aktualisiert wird. Es scheint auch einige Elemente aufgrund der Verzögerung zu überspringen.

Gibt es eine bessere Möglichkeit, damit umzugehen?

Vielen Dank!

BEARBEITEN:

Ok, also habe ich es so aktualisiert:

<code>   getTotal(function () {
       callback(items);
   });

   getTotal = function (callback) {

       var count = 1;

       for (var key in items) {
           if (items.hasOwnProperty(key)) {
               app.client.llen(items[key].id + '_click', function (err, total) {
                   items[key].total = total;

                   if (items.length == count) {
                       callback();
                   }

                   count++;
               });
           };
       }
</code>

Dies scheint zu funktionieren, es löst den Rückruf zum richtigen Zeitpunkt aus, es scheint jedoch, dass nur der letzte Schlüssel insgesamt aktualisiert wird.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage