zoukankan      html  css  js  c++  java
  • 要求设计 LazyMan 类,实现以下功能

    LazyMan('Tony');
    // Hi I am Tony
    
    LazyMan('Tony').sleep(10).eat('lunch');
    // Hi I am Tony
    // 等待了10秒...
    // I am eating lunch
    
    LazyMan('Tony').eat('lunch').sleep(10).eat('dinner');
    // Hi I am Tony
    // I am eating lunch
    // 等待了10秒...
    // I am eating diner
    
    LazyMan('Tony').eat('lunch').eat('dinner').sleepFirst(5).sleep(10).eat('junk food');
    // Hi I am Tony
    // 等待了5秒...
    // I am eating lunch
    // I am eating dinner
    // 等待了10秒...
    // I am eating junk food
    
    class LazyManClass {
        constructor(name) {
            this.taskList = [];
            this.name = name;
            console.log(`Hi I am ${this.name}`);
            setTimeout(() => {
                this.next();
            }, 0);
        }
        eat (name) {
            var that = this;
            var fn = (function (n) {
                return function () {
                    console.log(`I am eating ${n}`)
                    that.next();
                }
            })(name);
            this.taskList.push(fn);
            return this;
        }
        sleepFirst (time) {
            var that = this;
            var fn = (function (t) {
                return function () {
                    setTimeout(() => {
                        console.log(`等待了${t}秒...`)
                        that.next();
                    }, t * 1000);  
                }
            })(time);
            this.taskList.unshift(fn);
            return this;
        }
        sleep (time) {
            var that = this
            var fn = (function (t) {
                return function () {
                    setTimeout(() => {
                        console.log(`等待了${t}秒...`)
                        that.next();
                    }, t * 1000); 
                }
            })(time);
            this.taskList.push(fn);
            return this;
        }
        next () {
            var fn = this.taskList.shift();
            fn && fn();
        }
    }
    function LazyMan(name) {
        return new LazyManClass(name);
    }
    LazyMan('Tony').eat('lunch').eat('dinner').sleepFirst(5).sleep(4).eat('junk food');
    
  • 相关阅读:
    第二册二十一课
    第二册第二十课
    第二册第十九课
    第二册第十八课
    あなたがいるから (因为有你)
    flash 概要分析器
    this与回调函数
    cpp可变参笔记
    struct详解
    函数传递小结
  • 原文地址:https://www.cnblogs.com/fazero/p/11653722.html
Copyright © 2011-2022 走看看