[英]GET request, wait for external processes to complete before returning response
[英]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.