我有一大堆$ .ajax请求需要在启动之前等待对方。我知道不推荐使用async:false选项,而且我也知道如果我在.done中添加后续函数,那么这将与async:false的行为相同。然而,为了保持清洁,我想知道作为一种替代方案,我可以在没有额外代码的情况下离开.done,只需从#34;从上到下订购我的ajax":这会告诉jquery运行ajax,然后执行.done中的任何内容(在我的情况下都没有!),"模仿" async:false?
举个例子:
$.ajax({type: 'POST',
data: cool_data : "cool_data",
url: 'somewhere_over_the_rainbow.php'
}).done(function(){
})
$.ajax({type: 'POST',
data: more_cool_data : "more_cool_data",
url: 'more_somewhere_over_the_rainbow.php'
}).done(function(){
})
谢谢!
答案 0 :(得分:3)
没有
done
注册将在服务器应答时调用的回调。
使用async:false
阻止页面直到服务器应答。 不要使用。
将您的来电链接起来的解决方案是使用then:
$.ajax({ ... })
.then($.ajax({ ... })
.then($.ajax({ ... })
.then(function() { ... finished! ... });
答案 1 :(得分:0)
为什么不使用complete
功能?
$.ajax({type: 'POST',
data: cool_data : "cool_data",
url: 'somewhere_over_the_rainbow.php',
complete: function()
{
$.ajax({type: 'POST',
data: more_cool_data : "more_cool_data",
url: 'more_somewhere_over_the_rainbow.php',
complete: function()
{
// do something else
}
});
});