以下为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.