我的控制器中有一些代码,在它的内部,我有一个forEach循环,其中有一个返回Promise的函数。兑现承诺后,我可以正确地记录它返回的数组。 问题是,即使控制器不异步,javascript也不会等待forEach循环完成,而且我不知道为什么... 我看了很多视频并阅读了这篇文章,但我猜没有点击。 预先感谢
--no-daemon -Dorg.gradle.debug=true
控制台应如下所示:1,[发票],2、3、4,[...所有发票], 相反,我得到:1、4,[],[发票],2、3
答案 0 :(得分:3)
如果可行,您可以尝试以下方法:
exports.submitInv = (req, res) => {
let status = {
validated: [],
repacked: []
};
// ...other code...
console.log("1");
status.validated.forEach(invoice => {
const promises = [repackInvoice(invoice)];
Promise.all(promises)
.then(temp => {
temp.forEach(inv => {
status.repacked.push(inv);
});
return status;
}).catch(err =>{
console.log(err);
throw new Error(err);
})
});
console.log("4");
console.log(status.repacked);
};