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"));
- var whenResult = $.when($.ajax("test1.json"), $.ajax("test2.json"));
- whenResult.done(function(a1,a2){
- //函数内容略
- //a1和a2俩参数是when函数中两个ajax请求的相关jqXHR对象
- });
- whenResult.fail(function(){
- //函数内容略
- })
- whenResult.then(successFunc,failureFunc);
就是这么简单!