实现一个LazyMan

function _lazyMan(name) {
  this.tasks = [];   
  var _this = this;
  var fn =(function(n){
    var name = n;
    return function(){
      console.log("Hi! This is " + name + "!");
      _this.next();
    }
  })(name);
  this.tasks.push(fn);
  setTimeout(function(){
    _this.next();
  }, 0); 
}
_lazyMan.prototype.next = function() { 
  var fn = this.tasks.shift();
  fn && fn();
}
_lazyMan.prototype.eat = function(name) {
  var _this = this;
  var fn =(function(name){
    return function(){
       console.log("Eat " + name + "!");
       _this.next();
    }
  })(name);
  this.tasks.push(fn);
  return this; 
}
_lazyMan.prototype.sleep = function(time) {
  var _this = this;
  var fn = (function(time){
    return function() {
        setTimeout(function(){
           console.log("Wake up after " + time + "s!");
           _this.next();
        }, time * 1000);
    }
  })(time);
  this.tasks.push(fn);
  return this;
}
function lazyMan(name){
  return new _lazyMan(name);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容