Para loop, obter itens do atraso de redis

Eu estou usando o Node.js w / node_redis e estou fazendo um loop através de um objeto e procurando dados no Redis, retornando os resultados.

Eu tenho isso configurado assim:

<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>

O problema é que ele passa antes de completar a chamada para redis. Então, o callback é chamado, antes de atualizar o valor total. Parece também pular alguns itens devido ao atraso.

Existe uma maneira melhor de lidar com isso?

Obrigado!

EDITAR:

Ok, então eu atualizei assim:

<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>

Isso parece que iria funcionar, ele aciona o retorno de chamada no momento apropriado, no entanto, parece que apenas a última chave está sendo atualizada.

questionAnswers(1)

yourAnswerToTheQuestion