node.js redis 成员同步

com*_*com 3 sync redis node.js

我不知道是否有可能实现与Redis的的smembers的同步检索node_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)
Run Code Online (Sandbox Code Playgroud)

输出:

start
0
10
Run Code Online (Sandbox Code Playgroud)

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

我怎么解决这个问题?

yan*_*bai 7

为什么要使其同步?如果你想在 之后做某事members,只需在回调函数中做。

var callback=function(res){
    retrived=retrieved.concat(res);
    //continue do other things
};

client.smembers("offer", function (err, replies) {
    if(!err){
        callback(replies);
    }
})
Run Code Online (Sandbox Code Playgroud)

如果你想有一个循环结束后做一些事情,你可以尝试_.afterunderscore.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();
        }
    })
}
Run Code Online (Sandbox Code Playgroud)

查看更多:http : //underscorejs.org/#after