LazyMan

      实现一个LazyMan,可以按照以下方式调用:
    LazyMan("Hank")输出:
    Hi! This is Hank!

    LazyMan("Hank").sleep(10).eat("dinner")输出
    Hi! This is Hank!
    //等待10秒..
    Wake up after 10
    Eat dinner~

    LazyMan("Hank").eat("dinner").eat("supper")输出
    Hi This is Hank!
    Eat dinner~
    Eat supper~

    LazyMan("Hank").sleepFirst(5).eat("supper")输出
    //等待5秒
    Wake up after 5
    Hi This is Hank!
    Eat supper

    以此类推。
 function LazyMan(name){
            return new _lazyman(name)
         }
        
         
         
         function _lazyman(name){
            this.tasks = [];
            var that = this;
            var fn = (function(name){
                return function(){
                    console.log("Hello I am " + name)
                    that.next()
                }
            })(name)
            this.tasks.push(fn);

            setTimeout(function(){
                that.next()
            },0)
         }
         
         
         _lazyman.prototype ={
            constructor:_lazyman,
            next:function(){
                var fn = this.tasks.shift()
                fn && fn()
            },
            sleep:function(time){
                var that = this;
                var fn = (function(time){
                    return function() {
                        console.log("sleep ..." +time)
                        setTimeout(function(){
                            that.next()
                        },time)
                    }
                })(time)
                this.tasks.push(fn);
                return this;
            },
            sleepfirst:function(time){
                var that = this;
                var fn = (function(time){
                    return function(){
                        console.log("sleep ..." +time)
                        setTimeout(function(){
                            that.next()
                        },time)
                    }
                })(time)
                this.tasks.unshift(fn)
                return this;
            },
            eat:function(something){
                var that = this;
                var fn = (function(something){
                    return function(){
                        console.log("Eat " + something);
                        that.next()
                    }
                })(something)
                this.tasks.push(fn)
                return this;
            }
         }
         LazyMan("Joe").sleepfirst(5000).eat("breakfast").sleep(3000).eat("dinner").sleep(3000).eat("supper");
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是家呢?一个房子,一个爸爸,一个妈妈,几个孩子,或许还有爷爷、奶奶共同组成了一个家。 家的味道不仅要用嗅觉是、...
    蝴蝶梦ing阅读 3,398评论 0 2
  • 直接上代码: 上述代码需要引入 Qt 类文件: 测试程序的代码: 示例的显示结果:
    赵者也阅读 4,940评论 0 0
  • 再投一次,补上了叶子和微信名(:3_ヽ)_ 群里消息好多,经常会冲掉不少通知,但看到大家都在积极认真地分享,不禁有...
    隐匿的栗子阅读 1,738评论 3 0

友情链接更多精彩内容