1. 程式人生 > >實現一個簡單的lazyman

實現一個簡單的lazyman

實現 blog cti name init timeout bin bsp stack

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;

實現一個簡單的lazyman