使用同步$ .ajax调用时的执行顺序

时间:2013-09-18 08:55:05

标签: ajax jquery

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

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

对于同步ajax调用,评估顺序是(1),然后是(2),然后总是后跟(3)?我想特别确认(3)仅在整个(2)之后执行。

1 个答案:

答案 0 :(得分:1)

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

  

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

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

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

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

它们将按顺序执行。