javascript - 在 Node.js 的循环中移动到下一个迭代之前等待 Promise
问题描述
我在 node.js 中有以下循环
for (var i in details) {
if (!details[i].AmntRcvd > 0) {
res.sendStatus(400);
return;
}
totalReceived += details[i].AmntRcvd;
UpdateDetail(details[i].PONbr, details[i].LineID).then((results) => {
console.log(results);
details[i].QtyOrd = results.QtyOrd;
details[i].QtyRcvd = results.QtyRcvd;
details[i].QtyPnding = results.QtyPnding;
details[i].UnitCost = results.UnitCost;
}).catch((error) => {
console.log(error);
});
}
UpdateDetail 函数返回一个承诺。在继续循环的下一次迭代之前,我如何等待承诺解决/拒绝。
解决方案
您可以使用await
关键字来解决此问题。更多信息在这里
async function main() {
for (var i in details) {
if (!details[i].AmntRcvd > 0) {
res.sendStatus(400);
return;
}
try {
totalReceived += details[i].AmntRcvd;
let results = await UpdateDetail(details[i].PONbr, details[i].LineID);
console.log(results);
details[i].QtyOrd = results.QtyOrd;
details[i].QtyRcvd = results.QtyRcvd;
details[i].QtyPnding = results.QtyPnding;
details[i].UnitCost = results.UnitCost;
}
catch(e) {
console.log(error);
}
}
}
推荐阅读
- python - 在不知道名称的情况下导入文件
- sql - Sqlite:多次更新(查找和替换)不区分大小写
- python - 使用 Tensorflow 后端时,如何打印 Keras 的 SGD 优化器变体的中间状态
- netsuite - 如何在保存记录上返回上下文类型?
- php - 允许我的用户使用带有 PHP 的 Google Calendar API 在我的日历中添加会议,而无需身份验证
- laravel - 如何为本文创建表格和设计关系
- c++ - 看似不错的 delete[] 程序崩溃
- html - 这些神秘的元标签是如何进入我的 Weebly 网站的?
- python - BigQuery:在使用 UNNEST 函数和清理结果数据的方法后,我选择了更多列
- docker - 如何获得对 Dockerhub 的 HTTP API 请求 (v2) 的授权