我想知道是否可以用node_redis实现redis的同步检索。
_.each(seeds, function(subseed, key, list){
client.smembers(subseed, function (err, replies) {
retrieved = retrieved.concat(replies)
})
})
client.quit();
console.log("start")
console.log(retrieved.length)
输出:
start
0
10
所以看起来我需要以某种方式达到涂抹完成它运行时的点,或者以同步模式运行涂鸦。
我该如何解决这个问题?
答案 0 :(得分:3)
为什么要让它同步?
如果您想在members
之后执行某些操作,只需在回调函数中执行此操作。
var callback=function(res){
retrived=retrieved.concat(res);
//continue do other things
};
client.smembers("offer", function (err, replies) {
if(!err){
callback(replies);
}
})
如果您想在循环后执行某些操作,可以尝试_.after
underscore.js
,例如:
var times=10;
var arrayOfReplies=[]; //store all replies
var callback=function(){
//do something with arrayOfReplies
}
var afterAll = _.after(times,callback); //afterAll's callback is a function which will be run after be called 10 times
for(var i=0;i<10;i++){
client.smembers("offer", function (err, replies) {
if(!err){
arrayOfReplies=arrayOfReplies.concat(replies);
afterAll();
}
})
}