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);
  就是这么简单!

 

posted @ 2017-05-05 17:23  迷死特吕  阅读(1276)  评论(0编辑  收藏  举报