Dla pętli pobierz przedmioty z opóźnienia redis
Używam Node.js w / node_redis i przechodzę przez obiekt i przeglądam dane w Redis, a następnie zwracam wyniki.
Mam takie ustawienie:
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);
Problem polega na tym, że przechodzi on przez pętlę przed zakończeniem wywołania redis. Tak więc wywołanie zwrotne jest wywoływane, zanim zostanie faktycznie zaktualizowane wartość całkowita. Wydaje się również, że z powodu opóźnienia pomija niektóre elementy.
Czy jest lepszy sposób na to poradzić?
Dziękuję Ci!
EDYTOWAĆ:
Ok, więc zaktualizowałem to tak:
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++;
});
};
}
Wygląda na to, że zadziała, wywołuje wywołanie zwrotne w odpowiednim czasie, jednak wydaje się, że tylko ostatni klucz jest w całości aktualizowany.