jQuery.when,deferreds

有一天当我的上司问到我一个问题,两个或者多个ajax 同时运行,怎么去处理当它成功或者失败以后执行我想要的结果。我的第一反应就是if或者switch判断。其实不然jQuery已经有好的方案帮我们解决了这个问题。

接下来我们就详解一下$.when(deferreds)的用法。

参数deferreds,一个或多个延时对象或JS对象,我们初略的认为它就是一个或多个异步请求。

 

 

  when()函数常常和done()函数、fail()函数、then()函数联合使用:

  done(Function func) - 当deferreds中的处理都完成的时候执行Function回调函数

  fail(Function func) - 当deferreds中有一个处理失败的时候执行Function回调函数

  then(Function func1,Function func2)- 结合了done和fail函数,当都成功执行func1,当有一个失败执行func2

  举个栗子:

  $.when($.ajax("test1.json"), $.ajax("test2.json"));

  

  

  1. var whenResult = $.when($.ajax("test1.json"), $.ajax("test2.json"));
  2. whenResult.done(function(a1,a2){
  3. //函数内容略
  4. //a1和a2俩参数是when函数中两个ajax请求的相关jqXHR对象
  5. });
  6. whenResult.fail(function(){
  7. //函数内容略
  8. })
  9. whenResult.then(successFunc,failureFunc);

  就是这么简单!