gpt4 book ai didi

javascript - 如何让 forEach 循环等待每个 Ajax 函数完成

转载 作者:行者123 更新时间:2023-11-29 10:57:59 27 4
gpt4 key购买 nike

我有一个 array 语句,我想遍历每个语句并通过 ajax 调用提交给 server。我必须确保在发送下一个请求之前执行每个 ajax 请求,因为在 server 端代码上,我正在创建一个 unique key 对于这个 array 语句。发生的事情是在我提交第一个请求之前,第二个请求进来了,我最终创建了 2 个单独的 key ,因为它将每个 key 都视为第一次请求。我不能完全依赖超时,到目前为止我的代码继续循环。

function formPostSubmission(form){
var parts = ['a', 'b', 'c'];
var i = 0;
parts.forEach(function(entry) {
i++;
datafield ={
answer:entry,
displayOrder:i,
ajaxName:'statementPartialSubmit'
};
$.when(submitAjaxData(form, datafield)).then(function succesHandler(data){
console.log("promise test "+data);
console.log("Below request ");
},
function errorHandler(){
console.log("Error occurred ");
})
console.log("Go for next ");
});
}

function submitAjaxData(form, datafield) {
console.log(" called submitAjaxData ");
var loadurl = domainName + "/ajax-call-handler";
return $.ajax({
url: loadurl,
method: "GET",
data: datafield
});
}

我希望检查响应数据是否成功,然后在循环中继续。但这是我的 console 打印的方式。

called submitAjaxData
Go for next
called submitAjaxData
Go for next
promise test
Below request
promise test
Below request

最佳答案

使用 promise :

 var promises = [];
for (var i = 0; i < $total_files; i++) {
// jQuery returns a prom
promises.push($.ajax({
/* your ajax config*/
}))
}

Promise.all(promises)
.then(responseList => {
console.dir(responseList)
})

关于javascript - 如何让 forEach 循环等待每个 Ajax 函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53275216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com