0

我试图了解同步 ajax 调用如何与执行顺序相匹配,因为我遇到了一些奇怪的错误。

// (1)
$.ajax({
  async: false,
  url: url0,
  dataType: 'json',
  success: function(data) { 
       // (2)
  });
// (3)

对于同步 ajax 调用,评估的顺序是否真的是(1),然后是,(2)然后总是(3)?我想特别验证(3)仅在(2).

4

1 回答 1

1

是的,但这不是解决此问题的正确方法。相反,将 (3) 中的代码移动到成功处理程序 (2) 中。

如果它们达到相同的效果,你能解释一下为什么它很重要吗?如果 (2) 与从 ajax 调用中获得的数据无关怎么办?

同步调用将阻塞浏览器运行时,直到它完成。这意味着 UI 对用户完全没有响应。

如果您想在逻辑上将当前 (2) 与 (3) 分开,您可以绑定多个成功处理程序,如下所示:

var d = $.ajax({
  url: url0,
  dataType: 'json'
});
d.success(function() {
  // (2)
});
d.success(function() {
  // (3)
});

它们将按顺序执行。

于 2013-09-18T09:13:10.987 回答