我想知道是否有可能用 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
所以看起来我需要以某种方式到达 smembers 完成运行的时间点,或者以同步模式运行 smembers。
我该如何解决这个问题?
最佳答案
为什么要让它同步?
如果你想在 members
之后做一些事情,只需在回调函数中做。
var callback=function(res){
retrived=retrieved.concat(res);
//continue do other things
};
client.smembers("offer", function (err, replies) {
if(!err){
callback(replies);
}
})
如果你想在一个循环之后做一些事情,你可以试试underscore.js
的_.after
,例如:
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();
}
})
}
关于node.js redis smembers 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25580690/