【发布时间】:2017-01-18 00:33:09
【问题描述】:
我不知何故无法找到解决方案。这是我正在做的事情:
async.each(bottles, function(bottle) {
// set substance quantity to 0
updateQuantity(bottle[constant.SUBSTANCE_ID], 0)
.then(function() {
bottle[constant.EXPIRY] = expiry;
bottle[constant.IS_AVAILABLE] = true;
updateRecord(bottle)
.then(function() {
console.log('Updated');
},
function() {});
}, function() {});
}, function() {
console.log('Finished');
});
console.log('Done');
方法 updateQuantity 和 updateRecord 返回承诺,并在后台使用 Knex 更新,这也返回承诺。 我希望上面代码的输出是:
Updated
Updated
Finished
Done
但我得到的输出是:
Done
Updated
Updated
所以,async.each 的回调不起作用,代码没有等待 async.each 完成。
【问题讨论】:
-
async.js不 不适用于承诺。不要使用它。 -
你为什么要使用那些无操作函数?
-
@Bergi 除了 async.js 还有什么建议吗?
-
@Ashutosh 检查我的答案