jquery中的$when done then的用法
时间: 2023-09-22 14:03:00 浏览: 166
jQuery 中的 `$.when`,`done` 和 `then` 是一组用于处理异步操作的方法。
`$.when` 方法用于等待一个或多个异步操作完成。它接受任意数量的参数,每个参数都是一个需要等待的异步操作对象。当所有异步操作都完成时,`$.when` 返回一个新的 Deferred 对象。
`done` 方法是 `Deferred` 对象的一个回调函数,它在 `$.when` 返回的新的 Deferred 对象解决时被调用。可以将一个或多个回调函数作为参数传递给 `done` 方法。这些回调函数将在异步操作完成时执行,并且可以在函数内部访问异步操作的结果。
`then` 方法是 `Deferred` 对象的另一个回调函数,它在 `done` 方法调用后执行。可以将一个或多个回调函数作为参数传递给 `then` 方法。这些回调函数将在 `done` 方法的回调函数执行后执行,并且也可以在函数内部访问异步操作的结果。
使用 `$.when`,`done` 和 `then` 方法的典型用例是处理多个异步操作的结果。我们可以在 `$.when` 中传入多个需要等待的异步操作对象,然后在 `done` 或 `then` 方法中分别处理每个异步操作的结果。这样可以确保当所有异步操作都完成时再执行后续的逻辑。
例如,我们可以使用以下代码处理两个异步操作的结果:
```
// 创建两个 Deferred 对象
var deferred1 = $.ajax({ url: 'url1', method: 'GET' });
var deferred2 = $.ajax({ url: 'url2', method: 'GET' });
// 等待两个异步操作完成
$.when(deferred1, deferred2).done(function(result1, result2) {
// 处理异步操作的结果
console.log(result1);
console.log(result2);
}).then(function() {
// 执行后续逻辑
console.log('All async operations completed.');
});
```
以上代码中,`deferred1` 和 `deferred2` 是两个异步操作对象,分别表示两个 AJAX 请求。我们使用 `$.when` 方法等待这两个异步操作完成,并在 `done` 方法中处理每个异步操作的结果。在 `then` 方法中可以执行其他的逻辑,如打印完成的消息。
总之,`$.when`,`done` 和 `then` 是 jQuery 提供的用于处理异步操作的方法,它们可以帮助我们更方便地管理和处理多个异步操作的结果。
阅读全文