我使用Node.js的W / node_redis和我通过一个对象循环和查找在Redis的数据,然后返回结果。
我有它的设置是这样的:
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);
问题是,它遍历,完成呼叫的Redis之前。 因此,回调被调用时,它实际上是更新的总价值之前。 这似乎也跳过一些项目由于延迟。
有没有更好的方式来处理呢?
谢谢!
编辑:
好了,所以我喜欢这个更新它:
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++;
});
};
}
这似乎是它会工作,它触发在适当的时候回调,但似乎只有最后一个关键是让总更新。