jQuery 擴充套件setTimeout成為promise()物件

ivon發表於2014-02-12
 $.extend({
    setTimeout:function(time){
        return $.promise(function(resolve){
            var $this=this;
            setTimeout(function(){
                resolve.apply($this,[resolve]);
            },time);
        });
    },
    // promise物件
    promise:function(fn){
        return $.when(function(){
            var dtd=$.Deferred();
            if(typeof fn==='function'){
                fn.apply(dtd,[dtd.resolve,dtd.reject]);
            }
            return dtd.promise();
        }());
    }
}) 

demo:

var Interval=1000;
    $.setTimeout(Interval)
    .then(function(){
        console.log(Interval*1)
        return $.setTimeout(Interval)
    })
    .then(function(){
        console.log(Interval*2)
        return $.setTimeout(Interval)
    })
    .then(function(){
        console.log(Interval*3)
        return $.setTimeout(Interval)
    }); 

相關文章