方法:
$.when() 函数提供一种方法来执行一个或多个对象的回调函数。如果向 jQuery.when 传入一个延迟对象,那么会返回它的 Promise 对象(延迟方法的一个子集)。可以继续绑定 Promise 对象的其它方法,例如, defered.then 。当延迟对象已经被受理(resolved) 或被拒绝(rejected)(通常是由创建延迟对象的最初代码执行的),那么就会调用相应的回调函数。
语法:
```javascript
$.when( deferreds )
```
参数:
描述:
deferreds:Deferred类型,一个或多个延迟对象,或者普通的JavaScript对象。
更多实例:
如果你不传递任何参数,jQuery.when()将返回一个resolved(受理)状态的 promise 对象。
实例:
不传递任何参数,执行回调函数:
```javascript
$(function () { $.when( { testing: 123 } ).done( function(x) { alert(x.testing); } /* alerts "123" */ ); })
```
尝试一下 »:在多个延迟对象传递给jQuery.when() 的情况下,该方法返回一个新的"宿主"延迟对象,当所有的延迟对 象被受理(resolve)时,该方法才会受理它的宿主延迟对象。当其中有一个延迟对象被拒绝(rejected)时, 该方法就会拒绝它的宿主延迟对象。当宿主对象被受理时,doneCallbacks(受理回调)将被执行。
请根据提供的内容完成内容重构,并保持段落结构:
[mycode3 type="javascript"] $(function () { var d1 = $.Deferred(); var d2 = $.Deferred(); var d3 = $.Deferred(); $.when( d1, d2, d3 ).done(function ( v1, v2, v3 ) { alert( v1 ); // v1 is undefined alert( v2 ); // v2 is "abc" alert( v3 ); // v3 is an array [1, 2, 3, 4, 5] }); d1.resolve(); d2.reject("abc"); d3.resolve(1, 2, 3, 4, 5); }) [/mycode3]
尝试一下 »
在多个延迟的情况下,如果延迟对象之一被拒绝(rejected),jQuery.when()触发立即调用“宿主”延迟对象的 failCallbacks 回调函数。
实例
以下是重构后的代码:
```javascript
function handleRequests() {
$.when($.ajax('/page1.php'), $.ajax('/page2.php'))
.then(function (data1, textStatus1, jqXHR1) {
console.log(jqXHR1.status);
})
.fail(function (obj) {
console.log(obj.statusText);
});
}
$(function () {
handleRequests();
});
```