当前位置: 首页 > 面试题库 >

等待Promise,然后在Node.js中循环进入下一个迭代

籍弘伟
2023-03-14
问题内容

我在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函数返回一个Promise。在继续循环的下一个迭代之前,我如何等待承诺解决/拒绝。


问题答案:

您可以为此使用异步库。然后转到async.eachSeries。

您需要先执行npm install async

这是示例:

var async = require('async');
async.eachSeries(yourarray,function(eachitem,next){
// Do what you want to do with every for loop element
next();
},function (){
//Do anything after complete of for loop
})


 类似资料:
  • 我很确定我错过了一些次要的东西。我在对象数组上应用了一个javascript Foreach循环。在循环中,我正在对api进行异步调用以更新数据。我想要的是Foreach循环,在进入下一个迭代之前等待promise实现。 这是代码示例

  • 问题内容: 我正在使用bluebird,方法 getAll 和 update return promises。我如何说“等到两个承诺返回,然后更新currentProduct值”?我对JS很陌生… 问题答案: 如果可以使用/,这将很简单。 或者,如果您只能使用简单的承诺,则可以遍历所有产品,并将每个承诺置于最后一个循环中。这样,仅当前一个问题解决时,它才会前进到下一个问题(即使它将首先迭代整个循环

  • 问题内容: 我想问这个问题,因为我不确定我是否正确使用了Node.js逻辑 我有一组ID,需要使用redis的get方法进行查询。在检查了某个值之后(假设我正在检查通过给定的“键”获取的对象是否具有空名称),然后将它们添加到列表中。这是我的示例代码; 但是由于Node的异步特性,正如预期的那样,如果不检查列表中的每个id,它将执行“ Goes here …”。我的需要是在检查每个id之后应用其余过

  • 在搜索了很多类似问题的答案后,我仍然没有找到适合我需要的解决方案。 基本上,我有一个while循环,我想等待repaint()方法完成,然后再开始该循环的另一次迭代。 更详细地说,我有一些片段是在扩展JComponent的MapPanel类的paintComponent方法中绘制的。然后,当用户单击按钮时,算法开始搜索从“上部”线段开始的交点(使用endpoint作为事件点)。这个算法基本上就是我

  • java中是否存在跳过for循环其余部分的令牌?类似VB的东西在Java中继续。

  • 问题内容: Java中是否有一个令牌可以跳过其余的for循环?Java中类似VB的Continue。 问题答案: 关键字将在调用时开始下一次迭代 例如 这将打印 看到 文件