用回調(diào)實(shí)現(xiàn)LazyMan

僅作為學(xué)習(xí)筆記、日常交流使用

function LazyMan(name){
    var queue = [];
    var api = {
        sleep:function(seconds){
            queue.push(function(){
                console.log(`please wait ${seconds} seconds`);
                setTimeout(function(){
                    next();
                },seconds*1000);
            });
            return api;
        },
        eat:function(what){
            queue.push(function(){
                console.log(`Eat ${what}`);
                next();
            });
            return api;
        },
        sleepFirst:function(seconds){
            queue.unshift(function(){
                console.log(`please wait ${seconds} seconds`);
                setTimeout(function(){
                    next();
                },seconds*1000);
            });
            return api;
        },
        hi:function(name){
            queue.push(function(){
                console.log(`hi ${name}`);
                next();
            });
            return api;
        }
    }
    function next(){
        var fn = queue.shift();
        if(fn !== undefined){
            fn.call();
        }
    }
    api.hi(name);
    setTimeout(function(){
        next();
    },0);
    return api;
}
//LazyMan('fengjixuan').sleepFirst(2).eat('banana').eat('apple');
//LazyMan('fengjixuan').sleep(2).eat('banana').eat('apple');
//LazyMan('fengjixuan').eat('banana').eat('apple');
LazyMan('fengjixuan').sleepFirst(2).sleep(10).eat('banana').eat('apple');
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容