【发布时间】:2019-12-07 00:02:38
【问题描述】:
test() 下面的函数将在循环内被loopTheTest() 调用 6 次。
我希望这 6 个调用同步运行。
我知道async:false 是一种不好的做法,我找不到关于如何实现这一点的明确解决方案。
我检查了主题 promises 和 async-await,但无法将它们应用于以下情况(由于我缺乏知识)。
PS:我不是在寻找递归解决方案。
function loopTheTest(){
var cars = ["BMW", "Volvo", "Saab", "Ford", "Fiat", "Audi"];
for (i = 0; i < cars.length; i++) {
test(cars[i]);
}
}
function test(car){
//Some Codes
//AJAX POST REQUEST
//Some Codes
}
【问题讨论】:
-
更好的方法是在服务器端处理数组,只需要使用所有值调用它一次。否则,您始终可以通过将
false作为第三个参数传递来使您的请求同步。 developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/… -
Promise.all(cars.map(test)).then(function(arrayOfResults) { /* 对结果做一些事情 */ });
标签: javascript asynchronous promise async-await synchronous