【发布时间】:2017-06-16 23:02:32
【问题描述】:
我最近开始使用 Promise,例如,我可以等到我用 x 条记录更新数据库,然后再执行下一个函数。我发现自己计算循环迭代是为了在正确的时间兑现承诺。例如:
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()
-
这是 mongodb 吗?猫鼬?
-
@Thomas 所以你的意思是 promise.all,每次更新都是一个承诺?
-
@trincot 这是 mongodb
标签: javascript loops promise es6-promise