zoukankan      html  css  js  c++  java
  • 实现一个简单的lazyman

    function lazyman(name) {
        return new lazyman.fn.init(name);
    }
    
    lazyman.fn = lazyman.prototype = {
        construct: lazyman,
        stack: null,
        status: 0,
        init: function (name) {
            this.name = name;
            this.stack = [];
    
            return this;
        },
        sleep: function (time) {
            var that = this;
            time = +time;
            if(time !== time) {
                this.next();
            } else if(this.status) {
                this.stack.unshift(this.sleep.bind(this, time));
            } else {
                this.status = 1;
                this.print(`sleeping ${time} seconds...`);
    
                setTimeout(function () {
                    that.status = 0;
                    that.next();
                }, time * 1000);
            }
            return this;
        },
        next: function () {
            while(this.status == 0 && this.stack.length) {
                this.print(
                    this.stack.pop()()
                );
            }
            return this;
        },
        eat: function(thing) {
            this.stack.unshift(lazyEat.bind(null, this.name, thing));
            if(this.status == 0) {
                this.next();
            }
            return this;
        },
        print: console.log
    }
    
    lazyman.fn.init.prototype = lazyman.fn;
    
    function lazyEat(name, thing) {
        return `${name} eat ${thing}`;
    }
    
    module.exports = lazyman;
  • 相关阅读:
    window.onresize绑定事件以及解绑事件
    jqGrid中select带可编辑的
    ROS(机器视觉)
    Python(time模块)
    Python(random模块)
    Python迭代器
    Python生成器
    Python装饰器(函数)
    ROS(URDF机器人建模)
    ROS基础
  • 原文地址:https://www.cnblogs.com/dhsz/p/7060922.html
Copyright © 2011-2022 走看看