JQuery $.when & $.deferred

$.when$.deferred 是 jQuery 提供的工具,用于处理异步操作的结果,尤其是当你需要协调多个异步操作(如 AJAX 请求)时非常有用。它们允许你在所有异步操作完成后执行某些操作,并能够更好地管理复杂 的异步逻辑。

$.deferred

$.deferred 是 jQuery 的延迟对象,允许你创建一个可以手动触发的异步操作。它类似于其他语言中的 Promise,可以用来协调多个异步操作。

创建 Deferred 对象:

var deferred = $.Deferred();

触发完成或失败:

deferred.resolve(); // 标记为完成
deferred.reject();  // 标记为失败

处理完成或失败的回调:

deferred.done(function() {
  console.log("操作成功");
}).fail(function() {
  console.log("操作失败");
});

$.when

$.when 是 jQuery 的一个方法,用于处理多个异步操作的结果。它可以接受一个或多个 deferred 对象或其他可以被转换成 Promise 的对象,并返回一个新的 deferred 对象,代表所有传入的异步操作完成后的状态。

等待多个异步操作完成:

$.when(promise1, promise2).done(function(result1, result2) {
  console.log("所有操作成功:", result1, result2);
}).fail(function() {
  console.log("某些操作失败");
});

apply

apply 是 JavaScript 的一个内置方法,它允许你以数组形式传递参数。这在需要将数组内容作为多个参数传递给函数时非常有用。

当你有一个数组(比如多个 AJAX 请求的数组),并希望将这些请求传递给 $.when,你可以使用 apply 将数组元素作为单独的参数传递。

// 创建多个 AJAX 请求
var requests = [
  $.ajax({ url: "/api/endpoint1" }),
  $.ajax({ url: "/api/endpoint2" }),
  $.ajax({ url: "/api/endpoint3" })
];

// 使用 $.when 和 apply 等待所有请求完成
$.when.apply($, requests).done(function(response1, response2, response3) {
  // 所有请求成功完成
  console.log("请求结果:", response1, response2, response3);
}).fail(function() {
  // 其中一个或多个请求失败
  console.log("至少一个请求失败");
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值