Para bucle obtener elementos de redis delay

Estoy usando Node.js w / node_redis y estoy haciendo un bucle a través de un objeto y buscando datos en Redis, y luego obtengo resultados.

Lo tengo configurado de esta manera:

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

El problema es que atraviesa, antes de completar la llamada a redis. Así que se llama a la devolución de llamada, antes de que se actualice realmente el valor total. También parece omitir algunos elementos debido a la demora.

¿Hay una mejor manera de manejar esto?

¡Gracias!

EDITAR:

Ok, así que lo he actualizado así:

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

Esto parece que funcionaría, activa la devolución de llamada en el momento adecuado, sin embargo, parece que solo la última clave se está actualizando por completo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta