我正在使用带有 node_redis 的 Node.js 并循环遍历一个对象并在 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++;
});
};
}
这似乎会起作用,它会在适当的时间触发回调,但是似乎只有最后一个键正在完全更新。