以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
130. 创建LazyMan()

function LazyMan(name, logFn) {
  var actions = [];

  function runActions() {
    actions.forEach(function(action) {
      action();
    });
  }

  function sayHi() {
    logFn(`Hi, I'm ${name}.`);
  }

  function eat(food) {
    actions.push(function() {
      logFn(`Eat ${food}.`);
    });
    return this;
  }

  function sleep(duration) {
    actions.push(function() {
      logFn(`(after ${duration} seconds)`);
      setTimeout(function() {
        logFn(`Wake up after ${duration} seconds.`);
        runActions();
      }, duration * 1000);
    });
    return this;
  }

  function sleepFirst(duration) {
    actions.unshift(function() {
      logFn(`(after ${duration} seconds)`);
      setTimeout(function() {
        logFn(`Wake up after ${duration} seconds.`);
        runActions();
      }, duration * 1000);
    });
    return this;
  }

  sayHi();

  return {
    eat: eat,
    sleep: sleep,
    sleepFirst: sleepFirst
  };
}

// Usage
LazyMan('Jack', console.log)
// Hi, I'm Jack.

LazyMan('Jack', console.log).eat('banana').eat('apple')
// Hi, I'm Jack.
// Eat banana.
// Eat Apple.

LazyMan('Jack', console.log).eat('banana').sleep(10).eat('apple').sleep(1)
// Hi, I'm Jack.
// Eat banana.
// (after 10 seconds)
// Wake up after 10 seconds.
// Eat Apple.
// (after 1 second)
// Wake up after 1 second.

LazyMan('Jack', console.log).eat('banana').sleepFirst(10).eat('apple').sleep(1)
// (after 10 seconds)
// Wake up after 10 seconds.
// Hi, I'm Jack.
// Eat banana
// Eat apple
// (after 1 second)
// Wake up after 1 second.