也许结果并不奇怪,但我在 1-2 个月前开始使用 Node,所以对我来说它们是......
我有一个循环,它对(Redis 命令)返回的数组的所有其他值进行排序hgetall
,在该循环中,我调用一个函数从另一个表中获取所有值,其中键存储在排序后的数组中。这比我想象的更难解释。这是我的代码:
Pastebin:http://pastebin.com/tAVhSUV1(或见下文)
function getInfo (cn, callback) {
var anArray = [];
redis_client.hgetall('chat_info:' + cn, function (err, vals) {
if(err) { throw err; }
for(i in vals) {
anArray.push(vals[i]);
}
return callback(anArray);
});
}
redis_client.hgetall('chat_rooms:' + POST.chat_name, function (err, val) {
if(err) { throw err; }
var vars = [],
rArr = [];
for (i in val) {
vars.push(i);
}
for(var i = 0; i < vars.length; i += 1) {
if(i%2 === 0) {
getInfo(vars[i], function (hej) {
rArr.push(hej);
});
}
}
});
来自调用的回调getInfo()
在整个循环之后执行。我在这里错过了什么吗?因为它做不到,对吧?(当我使用 rArr (在循环之后)它是空的,nb但是如果我将它记录在回调中,它会在循环之后写入的所有其他内容之后被记录)