使用jQuery时,需要合并未知数量个ajax请求方法

一、已知数量的ajax请求时
当ajax请求的数量固定且已知时,可以直接使用jQuery的$.when().then()方法:

$.when(ajax1,ajax2,ajax3,...).then(successFunc(){},failFunc(){});

示例:

$.when($.ajax(options), $.ajax({options})).done(function (data1, data2) {
    //doSomething
});

二、当未知数量的ajax请求时
第一种情况的解决办法很简单,但是有时候可能会遇到一些特殊的情况,比如某些时候想把这些请求的过程提取出来写作一个通用的方法,此时请求的数量就变得不确定了,这种时候,$.when()中的参数就变得没有办法填了,而$.when()又不支持直接接受ajax数组作为参数(这是因为$.when方法的参数需要的是promise对象,而不是array对象),因此我们需要使用apply()方法来将存有不确定数量的ajax请求对象的数组传入$.when()方法中。
示例:

var requestList = [ ajax1 , ajax2 , ajax3 , ... ];  //存有不确定数量的ajax请求对象的数组
$.when.apply($, requestList).done(function () {
    //通过arguments来取出每个ajax请求成功函数返回的数据
    //doSomething
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,981评论 19 139
  • 抽象来说,deferreds 可以理解为表示需要长时间才能完成的耗时操作的一种方式,相比于阻塞式函数它们是异步的,...
    北方蜘蛛阅读 1,571评论 1 5
  • 二月的阳光,很冷,二月的风,很暖,二月的月,很高,二月的伤,很浅,到底二月很美。 给生命 友爱与生命,若爱不能给你...
    321小肥仔阅读 222评论 0 0
  • 你是否总是戒一两星期后就受不了,重新开始抽烟。 你是否戒烟多次都是以失败告终。 …… 到底怎么戒烟才最有效呢?如果...
    大东教练阅读 436评论 0 2