jQUery的$.when().done()是依序执行,得到的是同步执行的效果,为什么会是叫做异步

2024-11-07 22:41:28
推荐回答(1个)
回答(1):

因为它的内部实现是ajax,本来就是异步的,所以是异步编程。
jQuery.when(deferreds)
参数deferreds,一个或多个延时对象或JS对象,我们初略的认为它就是一个或多个异步请求。
例如:

[javascript] view plain copy
$.when($.ajax("page1.php"), $.ajax("page2.php"))

when()函数常常和done()函数、fail()函数、then()函数联合使用:
done(Function func) - 当deferreds中的处理都完成的时候执行Function回调函数
fail(Function func) - 当deferreds中有一个处理失败的时候执行Function回调函数
then(Function func1,Function func2)- 结合了done和fail函数,当都成功执行func1,当有一个失败执行func2

Example:

[javascript] view plain copy
var whenResult = $.when($.ajax("page1.php"), $.ajax("page2.php"));
whenResult.done(function(a1,a2){
//函数内容略
//a1和a2俩参数是when函数中两个ajax请求的相关jqXHR对象
});
whenResult.fail(function(){
//函数内容略
})
whenResult.then(successFunc,failureFunc);