美文网首页
LazyMan 实现...

LazyMan 实现...

作者: 行走的蛋白质 | 来源:发表于2021-04-23 09:33 被阅读0次

// 实现一个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

class Cp {
  constructor(name) {
    this.tasks = [];
    const task = (name => _ => {
      console.log(`Hi! This is ${name}!`);
      this.next();
    })(name);
    this.tasks.push(task);
    setTimeout(_ => {
      this.next();
    })
  }

  next() {
    const task = this.tasks.shift();
    task && task();
  }

  eat(food) {
    const task = (food => _ => {
      console.log(`Eat ${food}~`);
      this.next();
    })(food);
    this.tasks.push(task);
    return this;
  }

  sleep(wait) {
    const task = (wait => _ => {
      setTimeout(_ => {
        console.log(`Wake up after ${wait}`);
        this.next();
      }, wait * 1000);
    })(wait);
    this.tasks.push(task);
    return this;
  }

  sleepFirst(wait) {
    const task = (wait => _ => {
      setTimeout(_ => {
        console.log(`Wake up after ${wait}`);
        this.next();
      }, wait * 1000);
    })(wait);
    this.tasks.unshift(task);
    return this;
  }
}

function LazyMan(name) {
  return new Cp(name);
}

LazyMan('hank').sleep(3).eat('dog').eat('chicken').sleepFirst(5);

相关文章

  • js重点与难点(转)

    javascript LazyMan实现LazyMan(什么是LazyMan?请自行google)function...

  • LazyMan的实现

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

  • lazyman

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

  • LazyMan 实现...

    // 实现一个LazyMan,可以按照以下方式调用:// LazyMan(“Hank”)输出:// Hi! Thi...

  • 实现一个LazyMan

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

  • lazyman 实现

    function _lazyman(name) {this.tasks = [];var self = this;...

  • 实现lazyMan

    涉及的知识点: 流程控制:创建task任务队列,使用push、shift、unshift方法操作任务 闭包:当闭包...

  • LazyMan 自己的笨办法

    LazyMan 自己的笨办法 看了LazyMan,先用自己的笨办法写了个,只是为了实现功能,其他要求都没达到 本人...

  • LazyMan的深入解析和实现

    一、题目介绍 以下是我copy自网上的面试题原文: 实现一个LazyMan,可以按照以下方式调用:LazyMan(...

  • Lazyman的两种实现方式

    实现一个LazyMan, 可以按下列方式调用: 方式一: 方式二:

网友评论

      本文标题:LazyMan 实现...

      本文链接:https://www.haomeiwen.com/subject/titcrltx.html