码迷,mamicode.com
首页 > Web开发 > 详细

jQuery的 $when()

时间:2016-08-10 20:53:41      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

某天看jQuey的deffered对象的时候,突然想起了曾经面试的一个关于ajax的问题,就是同时发送三个ajax请求,当三个请求都成功的时候输出1,当时不知道jQuery的$.when(),所以以为是一个请求结束的时候去判断另一个,现在想起来好傻。

$.when()   1.5版本以后添加的

参数:零个或多个延迟对象(deferred对象),或者普通的JavaScript对象。

用处:文档描述提供一种方法来执行零个或多个对象的回调函数,我所理解的是用来同时执行多个异步对象,当这几个异步对象都执行成功后调用done函数,若有一个失败则执行fail函数。

主要考虑三种参数情况

1.接收一个非延迟对象的参数或者不接收任何参数,则默认为一个状态为resolve的延迟对象。只会执行done函数。

2.接收一个延迟对象,会返回他的一个promise对象,可以继续绑定延迟对象的其他方法,同时也会相应的执行resolve或reject

3.接收多个延迟对象,会根据一个集成的延迟对象,这个对象集合所有延迟对象的状态,当全部成功则resolve,失败则reject

 

所以ajax的那个问题可以这样解决。

$.when(ajax1,ajax2,ajax3).done(function(){alert(1)}).

 

调用$.when()以后继续执行的done,fail,then等方法,都是延迟对象的方法。

关于延迟对象deferred对象可以参考阮一峰的http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html

 

deferred对象和promise对象的区别

 

$.ajax()返回的是一个延迟对象?

不是,从 jQuery 1.5 开始,$.ajax()返回的jqXHR对象 实现了 Promise 接口, 使它拥有了 Promise 的所有属性,方法和行为。

 

jQuery的 $when()

标签:

原文地址:http://www.cnblogs.com/baiyuhong/p/5758147.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!