jquery中的工具方法--Deferred和when

这篇博客介绍了jQuery 1.5版本后引入的Deferred和Promise对象,重点讲解了Deferred的用法,包括异步队列的方法如done、fail、then等,以及其内部实现过程。同时,文章还探讨了$.when()的使用和实现,强调了当所有函数都resolve时才会执行done操作,只要有reject则执行fail操作。

在jquery1.5版本以后,Deferred和promise就是jquery中非常常用的两个功能,并且在这个版本利用Deferred又完全重写了ajax模块。Deferred对象是有jquery.Deferred构造的,$.Deferred在jquery代码中,分别在promise方法、Dom ready、ajax模块、动画模块被使用

Deferred的用法

var defer = $.Deferred();
function aaa(){
    console.log("aaa");
    defer.resolve();//完成态 相当于callbacks中的fire
}
aaa();
//相当于callbacks中的add方法 通过done改变状态
defer.done(function(){
    console.log('success');
});

var defer = $.Deferred();
function runAsync(){
    setTimeout(function(){
        console.log('执行完成');
        defer.resolve('data');
    },2000)
    return defer.promise();
}
defer.done(function(data){
    console.log(data);
})
defer.fail(function(data){
    console.log(data);
})
var d = runAsync();
    d.done(function(data){
    console.log(data);
})
d.then(function(data){
    console.log(data);
})

这里需要说明一下deferred和promise的区别,deferred相当于promise的继承类,相比于promise方法,deferred可以通过resolve、reject和 notify改变回调的状态,而promise不能修改回调的状态

$.Deferred的实现

异步队列的方法

添加回调函数方法

  • deferred.done(doneCallbacks[,doneCallbacks]):添加成功回调函数,当异步队列处于成功状态时被调用
  • deferred.fail(failCallbcks[,failCallbacks]): 添加失败回调函数,当异步队列处于失败状态时被触发
  • deferred.progress(progressCallbacks):添加消息回调函数
  • deferred.then(doneCallbacks,failCallbacks[,progressCallbacks]): 添加成功回调函数、失败回调函数、消息回调函数
  • deferred.always(alwaysCallbacks[,alwaysCallbacks]):添加回调函数,当异步队列处于成功或失败状态时调用

执行回调函数方法

  • deferred.resolve(args): 使用指定的参数调用所有的成功回调函数
  • deferred.resolveWith(context[,args]): 使用指定的上下文和参数调用所有的成功回调函数,异步队列进入成功状态
  • deferred.reject(args): 使用指定的参数调用所有失败回调函数,异步队列进入失败状态
  • deferred.rejectWith(context[.args]: 使用指定的上下文和参数调用所有失败回调函数,异步对垒进入失败状态
  • deferred.notify(args): 使用指定的参数调用所有的消息回调函数
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值