Bel*_*gor 0 javascript ajax jquery
我有以下问题:
我有一个循环:
// Code A
. . .
for (var key in dict){
// Code B
. . .
var list = this.initializeList();
var selfRef = this;
jQuery.ajax({
dataType: 'json',
url: '/someUrl',
data: {'sent_data': sendData},
success: function (recievedData){
this.function(list);
}
});
// Code C
. . .
}
// Code D
. . .
Run Code Online (Sandbox Code Playgroud)
现在,理想的方法是,如果代码的执行顺序是:
但是,问题是,在步骤2中的循环:第一,代码B被执行,并且下一个- AJAX调用,然后再次代替AJAX代码代码C.在下一次迭代中,AJAX代码再次执行而不是代码B.对我来说,执行顺序与上面的列表中显示的一样非常重要.正如您所看到的,应该为每个循环重新初始化变量列表,但是,我们只有第一次初始化时才会进行多次AJAX调用.
我该如何解决?
你需要使$ .ajax()同步(而不是默认的异步),如下所示:
$.ajax({
...
async: false
});
Run Code Online (Sandbox Code Playgroud)
这将导致脚本的执行等到$ .ajax结束,然后继续执行脚本的其余部分.
我希望这有帮助!