Javascript 在执行函数之前,等待Ajax调用(以$为单位)。每个循环完成
我只想在$中进行的所有ajax调用完成后调用函数。实现这一目标的最佳方式是什么Javascript 在执行函数之前,等待Ajax调用(以$为单位)。每个循环完成,javascript,jquery,ajax,Javascript,Jquery,Ajax,我只想在$中进行的所有ajax调用完成后调用函数。实现这一目标的最佳方式是什么 function recaculateSeatingChartSeatIds() { var table_id = $(".seatingChartTable").attr("id"); var seat_id = 0; $(".nameContainer").find("p").each(function() { seat_id++; var participant_id = $(t
function recaculateSeatingChartSeatIds()
{
var table_id = $(".seatingChartTable").attr("id");
var seat_id = 0;
$(".nameContainer").find("p").each(function()
{
seat_id++;
var participant_id = $(this).attr("data-part-id");
$.ajax({
method: 'POST',
datatype: 'jsonp',
url: base_url + 'users/assignToTableAndSeat/' + event_id + "/" + participant_id + "/" + table_id + "/" + seat_id
}).done(function () {
console.log("Participant Added");
}).fail(function (xhr, text, error) {
console.log(error);
});
});
funcToCallAfterAllComplete();
}
如果在ajax调用之后为每个
p
设置一个标志,然后总是调用一个函数来检查所有p
是否都有该标志,会怎么样
$(".nameContainer").find("p").each(function()
{
seat_id++;
var participant_id = $(this).attr("data-part-id");
$.ajax({
method: 'POST',
datatype: 'jsonp',
url: base_url + 'users/assignToTableAndSeat/' + event_id + "/" + participant_id + "/" + table_id + "/" + seat_id
}).done(function () {
console.log("Participant Added");
$("p[data-part-id='"+ participant_id +"']").data('completed', 'completed');
}).fail(function (xhr, text, error) {
console.log(error);
});
});
tryFuncToCallAfterAllComplete(){
$(".nameContainer").find("p").each(function()
{
if($(this).data('complete') != 'completed'){
return;
}
}
funcToCallAfterAllComplete();
}
funcToCallAfterAllComplete();
}
这将允许您同时调用它们,并且<>代码>函数-完整的只在所有Ajax调用已经完成
时运行,我正在编写一个脚本来帮助他作出承诺,但在中间,有人把它标记为重复的和封闭的答案。不管怎样,我认为它将是一个很好的承诺候选人。我对承诺不熟悉,我会调查一下。谢谢,基本上,在循环中,您添加了新的承诺(函数(resolve,reject){//当ajax成功时;resolve(ajax结果);//当错误发生时;reject(result)});然后在循环之外添加Promise.all(promiseArray)。然后(function(result){//all计算并返回结果数组})。catch(function(result){//至少有一个ajax请求失败了。})不是真的,我的意思是HTML5附带的。IE的旧版本仍然不支持它,但有多填充。不仅对于ajax,它还有很多用途。例如,您可以使用promise打开一个弹出窗口,解决或拒绝每个用户的按钮单击,并在同一功能中运行其他内容等,