js 대기 열 구현

발췌:http://www.cnblogs.com/hustskyking/p/javascript-asynchronous-programming.html
/**
* @author Barret Lee
* @email [email protected]
* @description       ,   
*/
var Q = {
    //       
    a: [],
    //       queue
    q: function(d){
        //                    
        if(!/function|number/.test(typeof d)) return;

        Q.a.push(d);
        //         
        return Q;
    },
    //      dequeue
    d: function(){
        var s = Q.a.shift();
        //              
        if(!s) return;

        //      ,    ,     dequeue
        if(typeof s === "function") {
            s(), Q.d();
            return;
        }

        //      ,         ,   dequeue
        setTimeout(function(){
            Q.d();
        }, s);
    }
};



var aa = {};

Q
.q(function(){
	aa.a = "aaaaaa";
    record("0 <i style='color:blue'>3s     ,0   1    </i>");
})
.q(3000)  //    3s
.q(function(){
	aa.b = "bbbb";
    record("1 <i style='color:blue'>2s     ,1   2    </i>");
})
.q(2000)  //    2s
.q(function(){
	aa.c = "cccc";
    record("2 <span style='color:red'>     ,OK,    ~</span>");
})
.q(function(){
	console.log(aa);
})
.d();

좋은 웹페이지 즐겨찾기