簡體   English   中英

Javascript等待Promise在for循環內完成,然后返回響應

[英]Javascript wait for Promise to complete inside for-loop before returning response

我試圖在for循環中完成一個Promise后作出回應。

我已經看過這些 問題 ,但它們並不能解決我的情況。

methodGetOrders和methodGetLines是我必須使用的外部庫的一部分。 他們都撥打網絡電話,因此會有一定的延遲。 該函數始終返回“ 0”,因為它不等待內部承諾完成。 我意識到無法“等待”完成諾言,但是如何在響應中獲得正確的counter值?

doWorkMainFunction() {
  methodGetOrders()
    .then(orderList =>  {
       var counter=0;
       for (var i=0; i< orderList.length; i++) {
         methodGetLines()
           .then (lineData => {
              if (someCondition) { counter++; }
            } // end of inner THEN
       } // end FOR loop
       return counter; // This always returns '0'
   } // end of outer THEN
}

在循環中創建一個包含所有promise的數組,然后在所有這些promise解決之后,使用Promise.all()返回counter

methodGetOrders()
  .then(orderList => {
    var counter = 0;

    var promises = orderList.map(order => {
      return methodGetLines()
        .then(lineData => {
          if (someCondition) {
            counter++;
          }
        }) // end of inner THEN
    }) // end promise map
    return Promise.all(promises).then(_ => counter);
  }) // end of outer THEN
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM