jquery Deferred对象

本文介绍了jQuery中Deferred对象的概念及其使用方式,通过示例展示了如何利用Deferred对象处理耗时较长的JavaScript操作,包括异步和同步任务。
<script>
function f1(){
    var D = $.Deferred();
    setTimeout(
        function(){
            alert("yaha!");
            //D.resolve(); // 改变deferred对象的运行状态为"已完成",立即触发done
            D.reject(); // 改变deferred对象的运行状态为"未完成",立即触发fail
        },2000
    );
    return D.promise();    
}
function f2(){
    var D = $.Deferred();
    setTimeout(
        function(){
            alert("yaha!");
            D.resolve();
            D.reject();
        },5000
    );
    return D.promise();    
}

$.when(f1(),f2())
.done(function(){alert('done!');})
.fail(function(){alert('fail!');});
</script>

开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。

通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。

但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,jQuery开发团队就设计了Deferred对象(1.5版本)。

简单说,deferred对象就是jQuery的回调函数解决方案。

转载于:https://www.cnblogs.com/sooj/archive/2013/06/08/3126691.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值