用回调实现LazyMan

仅作为学习笔记、日常交流使用

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');
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 代码如下所示: 在HttpUtil.java文件中 在huidiao.java文件中 再来一个例子,在okhttp...
    名字_都被占了阅读 3,772评论 0 0
  • 戴,戈+异(異),小篆和大篆写法略有不同: 这么复杂的一个字,简体里居然没把它给简化。不太复杂的異字却被简化了成了...
    麦叔和小麦阅读 9,380评论 1 25
  • 三天了心里依然堵得慌,即使神怠懒言但脑子里却总是不停地浮现着您的身影。那过往的点点滴滴,朝朝暮暮怎一个忘字...
    梅酒煮年华阅读 1,462评论 1 1
  • 从来没有觉得自己这么脆弱,今天遇到朋友的弟弟结果聊了几句挺投缘,晚上加了微信。聊了几句看到了曾经那个人说过的话,突...
    Sevdah阅读 1,066评论 0 0
  • 黑盒测试: 黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑...
    凯哥学堂阅读 3,677评论 0 0