顺序执行js
Sequential execution js
我正在开发一个需要按顺序处理 ajax 调用的项目。我的代码是这样的:
for(var j=0; j<3;j++) {
$.ajax({
url:url[j],
async:false
}).done(function(result){
var data = result.data;
for(var i=0; i < data.length;i++){
analyses += "<div><div id=\"" + data[i] + "\" class=\"module\">";
analyses += "<br/>Analysis : " + data[i] + "<br/>";
analyses += "</div></div>";
$("#analysesPlaceHolder").html(analyses);
}
});
}
然而,现在它只是从列表中随机选择 url(有时是第一个,有时不是)。如何使执行按顺序进行,以便代码首先执行第一个 ajax 调用,然后执行第二个等
我不建议在循环中使用 ajax 调用。
这是一个更好的方法,它在 ajax 回调中增加计数,然后触发下一个 ajax 请求:
var urlCount = 0;
var makeAjaxCall = function(count) {
$.ajax({
url:url[count],
}).done(function(result){
var data = result.data;
for(var i=0; i < data.length;i++){
analyses += "<div><div id=\"" + data[i] + "\" class=\"module\">";
analyses += "<br/>Analysis : " + data[i] + "<br/>";
analyses += "</div></div>";
$("#analysesPlaceHolder").html(analyses);
}
urlCount++;
if (urlCount < 3) {
makeAjaxCall(urlCount);
}
});
}
makeAjaxCall(urlCount);
您还可以使用 promises 链接 ajax 调用,如上面的评论所述。
我正在开发一个需要按顺序处理 ajax 调用的项目。我的代码是这样的:
for(var j=0; j<3;j++) {
$.ajax({
url:url[j],
async:false
}).done(function(result){
var data = result.data;
for(var i=0; i < data.length;i++){
analyses += "<div><div id=\"" + data[i] + "\" class=\"module\">";
analyses += "<br/>Analysis : " + data[i] + "<br/>";
analyses += "</div></div>";
$("#analysesPlaceHolder").html(analyses);
}
});
}
然而,现在它只是从列表中随机选择 url(有时是第一个,有时不是)。如何使执行按顺序进行,以便代码首先执行第一个 ajax 调用,然后执行第二个等
我不建议在循环中使用 ajax 调用。
这是一个更好的方法,它在 ajax 回调中增加计数,然后触发下一个 ajax 请求:
var urlCount = 0;
var makeAjaxCall = function(count) {
$.ajax({
url:url[count],
}).done(function(result){
var data = result.data;
for(var i=0; i < data.length;i++){
analyses += "<div><div id=\"" + data[i] + "\" class=\"module\">";
analyses += "<br/>Analysis : " + data[i] + "<br/>";
analyses += "</div></div>";
$("#analysesPlaceHolder").html(analyses);
}
urlCount++;
if (urlCount < 3) {
makeAjaxCall(urlCount);
}
});
}
makeAjaxCall(urlCount);
您还可以使用 promises 链接 ajax 调用,如上面的评论所述。