За цикл получить предметы из Redis Delay
Я использую Node.js с node_redis, и я зацикливаюсь на объекте и ищу данные в Redis, а затем возвращаю результаты.
У меня это настроено так:
<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>
Проблема в том, что он проходит до завершения вызова redis. Таким образом, обратный вызов вызывается до того, как он фактически обновит общее значение. Также кажется, что некоторые пункты пропускаются из-за задержки.
Есть ли лучший способ справиться с этим?
Спасибо!
РЕДАКТИРОВАТЬ:
Итак, я обновил его так:
<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>
Похоже, что это будет работать, он вызывает обратный вызов в соответствующее время, однако кажется, что только последний ключ обновляется полностью.