結果はおかしくないかもしれませんが、私は 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(ループの直後)を使用すると空になりますが、コールバックでログに記録すると、ループの後に他のすべてが書き込まれた後にログに記録されます)