私は最近、約束を使用し始めました。たとえば、次の関数を実行する前にx個のレコードでデータベースを更新するまで待つことができます。私は自分自身が適切な時に約束を解決するためにループの繰り返しを数えていることを知っています。たとえば:JavaScriptのループ反復のカウントを避ける方法
var updateAccounts = function(accounts) {
var promise = new Promise(function(resolve, reject) {
var counter = 0;
accounts.forEach(function(account) {
db.collection('accounts').update({
name: account.name
}, {
$set: {
balance: account.balance
}
});
counter++
if (counter == accounts.length) {
resolve('accounts updated');
}
});
}
});
return promise;
}
はループが反復回数をカウントせずに終了するまで待機する方法はありますか?ハッキーのような気分だけど、本当に問題なのかどうかは分かりません。
更新が完了するのを待っているわけではありません。ループは同期していますが、更新はそうではありません。ループが長く終わっている間にパラレルで起こります。 [Promise.all()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all)をチェックしてください – Thomas
これはmongodbですか?マングース? – trincot
@トーマスあなたはpromise.allを意味するので、各アップデートは約束ですか? – chuckieDub