📅  最后修改于: 2023-12-03 15:16:46.612000             🧑  作者: Mango
jQuery when() 方法是一种异步操作处理机制,用于等待所有异步操作完成后再执行下一步操作。
$.when([object|promise|array]).then(callbackFunction);
object
:零个或多个需要等待处理的 Deferred 对象或普通 JavaScript 对象。promise
:零个或多个需要等待处理的 Promise 对象。array
:包含 Deferred 对象、Promise 对象或普通 JavaScript 对象的数组。callbackFunction
:所有异步操作完成后执行的回调函数。该函数的参数是返回结果数组,每个元素对应一个异步操作的返回值。以下示例展示了如何使用jQuery when()方法等待多个Ajax请求完成后再执行后续操作。假设有3个Ajax请求,分别是请求1、请求2和请求3。
$.when(
$.ajax('/path/to/request1'),
$.ajax('/path/to/request2'),
$.ajax('/path/to/request3')
).then(function(response1, response2, response3){
// 处理请求1的返回值
console.log(response1);
// 处理请求2的返回值
console.log(response2);
// 处理请求3的返回值
console.log(response3);
});
假设请求1返回值为"response1",请求2返回值为"response2",请求3返回值为"response3",则在控制台输出结果如下:
response1
response2
response3
如果某些异步请求失败,返回的结果不是Promise对象,而是一个错误对象,可使用fail()
方法来处理错误。
$.when(
$.ajax('/path/to/request1'),
$.ajax('/path/to/request2'),
$.ajax('/path/to/request3')
).then(function(response1, response2, response3){
// 处理请求1的返回值
console.log(response1);
// 处理请求2的返回值
console.log(response2);
// 处理请求3的返回值
console.log(response3);
}).fail(function(error){
// 处理错误对象
console.log(error);
});
是的,可以。需要注意参数的顺序对应异步操作返回值的顺序。
$.when(
$.ajax('/path/to/request1'),
$.ajax('/path/to/request2'),
$.ajax('/path/to/request3')
).then(function(response1, response2, response3){
// 通过参数传递自定义参数
customFunction(response1, response2, response3);
});
function customFunction(result1, result2, result3){
// 处理自定义参数
}
jQuery when() 方法是一种异步操作处理机制,用于等待所有异步操作完成后再执行下一步操作。它可以接收多个Deferred对象、Promise对象或普通JavaScript对象作为参数,并返回一个新的Deferred对象,等待所有异步操作完成后再执行回调函数。可以使用done()方法处理异步操作完成后的结果,使用fail()方法处理错误结果,还可以向回调函数传递自定义参数。