等到ajax及其回调函数完成

时间:2013-09-16 02:44:37

标签: javascript ajax

我正在构建一个允许用户同时执行多项操作的Web应用程序。例如,用户可以打开列表,删除列表或添加新列表。

每个动作进行ajax调用并执行回调函数以在成功时更新UI。我想确保以序列化方式执行这些操作,以便UI不会失去同步。例如,如果用户打开一个列表,但稍后删除列表一小段时间,这取决于首先调用fjihes的ajax,它可能会显示应该被删除的列表。

为了实现这一点,对于每个动作,我想等到ajax调用其回调函数完成。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

使用Jquery,您可以将async: false添加到Ajax调用中,或使用Jquery deferred确保仅在Ajax调用完成后发出操作(假设您使用Jquery)。

如果您有多个Ajax请求,示例可能如下所示:

$.ajax({url: url}).pipe(function() {
  // some ajax stuff
  return $.ajax({});
}).pipe(function() {
  // some more ajax stuff (3rd request)
  return $.ajax({});
}).done(function() {
  // done with all ajax requests...
});

答案 1 :(得分:0)

如果您正在使用jQuery,.always() / .done()后会调用.fail()回调。

$.ajax("example.php")
    .done(function() {
        alert("success");
    })
    .fail(function() {
        alert("error");
    })
    .always(function() {
        alert("complete"); //Called after done/fail callbacks
    });