我是在像这样的foor循环中使用redis从我的数据库中获取数据。
client.smembers(user_key, function(err, reply) {
console.log("1");
for(var i=0; i < reply.length; i++) {
console.log("2");
client.hgetall(reply[i], function(error, object) {
console.log("3");
// Do stuff
});
}
console.log("4");
});
问题是redis是异步的,并且foor循环不会等待redis完成获取数据。例如,如果reply
为["user_1", "user_2"]
,那么这将是输出:
1
2
2
4
3
如何强制循环等待redis?
答案 0 :(得分:0)
使用 underscore :: each():
const _ = require('underscore')
client.smembers(user_key, function(err, reply) {
_.each(reply,function(element, index){
client.hgetall(element, function(error, object) {
// Do stuff
})
})
})