node.js redis同步清除

时间:2014-08-30 08:53:09

标签: node.js redis sync

我想知道是否可以用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

所以看起来我需要以某种方式达到涂抹完成它运行时的点,或者以同步模式运行涂鸦。

我该如何解决这个问题?

1 个答案:

答案 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();
        }
    })
}

了解详情:http://underscorejs.org/#after