私はnode_redisでNode.jsを使用していますが、オブジェクトをループしてRedisでデータを検索してから結果を返しています。forループはredis delayからアイテムを取得します
私はそれがこのような設定があります。
for (var key in items) {
if (items.hasOwnProperty(key)) {
app.client.llen(items[key].id+'_click', function(err, total) {
items[key].total = total;
});
}
}
callback(items);
問題はRedisの呼び出しを完了する前に、それがループしていることです。実際には合計値が更新される前にコールバックが呼び出されます。遅延のためにいくつかの項目をスキップするようだ。
これを処理するより良い方法はありますか?
ありがとうございました!私はこのようにそれを更新した
オクラホマので、::
EDITそれがうまくいくように
getTotal(function() {
callback(items);
});
getTotal = function (callback) {
var count = 1;
for (var key in items) {
if (items.hasOwnProperty(key)) {
app.client.llen(items[key].id + '_click', function (err, total) {
items[key].total = total;
if (items.length == count) {
callback();
}
count++;
});
};
}
これはと思われる、それは適切な時にコールバックをトリガし、しかし、それは最後のようですキーが更新されています。
あなたは再帰バージョンを試してみましたか? –
Hm、forループ内またはその代わりに? – dzm