我在节点中使用async
模型以及redis。
我的代码:
async.each(data, function(n, done) {
redisClient.LLEN("user:" + n + ":active", function(err, numbActive) {
if(!err) {
console.log("[CHECKING].... " + n + " NUMB::::: " + numbActive);
globalNumbActive += numbActive;
done(globalNumbActive);
} else {
done(err, 0);
}
});
}, function(err, globalNumbActive) {
console.log("GLOBALS --> " + globalNumbActive);
return callback(globalNumbActive);
});
以上数据包含:
['231', '323', '323']
我想检查user:user_id:active
列表中的每个用户ID,然后对它们求和并返回。
现在,上面只抓住第一个,然后返回。
任何想法我做错了什么?
答案 0 :(得分:0)
如果删除主回调的第二个参数怎么办?以下代码段对我有用。
// Assume the two lists have been created in the way below.
// redisClient.lpush('user:231:active', 'John', 'Adam');
// redisClient.lpush('user:323:active', 'Sam');
var data = ['231', '323', '323'];
var globalNumActive = 0;
async.each(data, function(n, callback) {
redisClient.llen('user:' + n + ':active', function(err, numActive) {
if (!err) {
globalNumActive += numActive;
console.log('user id: ' + n + '\tactive #: ' + numActive + '\ttotal active #: ' + globalNumActive);
callback(null);
} else {
callback(err);
}
});
}, function(err) {
console.log('total active #: ' + globalNumActive);
});
输出
user id: 231 active #: 2 total active #: 2
user id: 323 active #: 1 total active #: 3
user id: 323 active #: 1 total active #: 4
total active #: 4