我试图了解同步 ajax 调用如何与执行顺序相匹配,因为我遇到了一些奇怪的错误。
// (1)
$.ajax({
async: false,
url: url0,
dataType: 'json',
success: function(data) {
// (2)
});
// (3)
对于同步 ajax 调用,评估的顺序是否真的是(1)
,然后是,(2)
然后总是(3)
?我想特别验证(3)
仅在(2)
.
是的,但这不是解决此问题的正确方法。相反,将 (3) 中的代码移动到成功处理程序 (2) 中。
如果它们达到相同的效果,你能解释一下为什么它很重要吗?如果 (2) 与从 ajax 调用中获得的数据无关怎么办?
同步调用将阻塞浏览器运行时,直到它完成。这意味着 UI 对用户完全没有响应。
如果您想在逻辑上将当前 (2) 与 (3) 分开,您可以绑定多个成功处理程序,如下所示:
var d = $.ajax({
url: url0,
dataType: 'json'
});
d.success(function() {
// (2)
});
d.success(function() {
// (3)
});
它们将按顺序执行。