【问题标题】:continue in js program after finishing ajax calls完成ajax调用后在js程序中继续
【发布时间】:2015-08-30 19:27:18
【问题描述】:

我有一个带有 3 个 ajax 调用的函数

var loadEditModalAddressData(){
     loadCountries();
     loadStates();
     loadDistricts();
};

我希望从 js 等待,直到所有 ajax 调用完成。

我的部分代码

loadEditModalAddressData();
$(document).ajaxStop(function(){
// functionality using requested data 
....
}

这很好,直到我添加了额外的功能并发现 $(document).ajaxStop 在每个完整的请求(或一堆请求)之后被调用,不仅在某些函数范围内,混搭我的代码功能。

我该怎么做?

【问题讨论】:

  • 如果我理解你的话,.ajaxStop(function() 可以将请求的数据存储在一个数组中。当您在数组中拥有所需的所有数据时,您可以调用使用该数据的函数。

标签: javascript jquery ajax


【解决方案1】:

肮脏的方法可能是使用ajaxStop 中的计数器来确保所有三个调用都已返回。稍微好一点的方法可能是为每个调用添加回调,并在收到最后一个调用时启动处理。

但是,最好的方法可能是使用 Promise。 如果您使用 jQuery 进行调用,您可以执行以下操作:

$.when(call1, call2, call3).then(function(results){
     // your stuffs
});

callX 是返回 $.get(或任何其他 jQuery 承诺)的地方。

看看here

【讨论】:

    【解决方案2】:

    使用$.when 等待多个延迟/承诺。是原生Promise.all()的代名词。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多