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.