jQuery Deferred 实现事件同步

支持 jQuery 1.5+


使用方法 1

var dtd = $.Deferred(); 

var wait = function(dtd){
    var tasks = function(){
        alert("执行完毕!");
        dtd.resolve(); 
    };
    setTimeout(tasks,5000);
    return dtd;
};

$.when(wait(dtd))
    .done(function(){ alert("哈哈,成功了!"); })
    .fail(function(){ alert("出错啦!"); });

使用方法 2

防止执行状态被外部改变的方法

var wait = function(dtd){
    var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
    var tasks = function(){
        alert("执行完毕!");
        dtd.reject(); // 改变Deferred对象的执行状态
    };

        setTimeout(tasks,5000);
        return dtd.promise(); // 返回promise对象
};

$.when(wait())
    .done(function(){ alert("哈哈,成功了!"); })
    .fail(function(){ alert("出错啦!"); });

$.Deferred(wait)
    .done(function(){ alert("哈哈,成功了!"); })
    .fail(function(){ alert("出错啦!"); });

知识共享许可协议
《jQuery Deferred 实现事件同步》 常伟华 创作。
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议 | 3.0 中国大陆许可协议进行许可。

站内公告