node.js redis异步调用
node.js redis asynchronous calls
我在像这样的 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?
使用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
})
})
})
我在像这样的 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?
使用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
})
})
})