实现一个LazyPig,可以按照以下方式调用:
/* LazyPig("Peggy")输出:
Hello,I'm Peggy!
LazyPig("Peggy").sleep(10).eat("dinner")输出
Hello,I'm Peggy!
//等待10秒..
Wake up after 10
Eat dinner~
function LazyPig(name) {
console.log(`Hello, I\'m ${name}!`)
var arr = new Array();
var isRec = false;
var isSteep = false;
this.sleep = function (n) {
isSteep = true
arr.push({
fun: "sleep",
val: n
});
if (!isRec) {
recursive();
}
return this;
}
this.eat = function (input) {
if (isSteep) {
arr.push({
fun: "eat",
val: input
});
} else{
_eat(input);
}
return this;
}
function _eat (input) {
console.log(`Eat ${input}`);
}
function recursive() {
isRec = true;
if (!!arr) {
var obj = arr.shift();
if (!obj) return;
if (obj.fun === "sleep") {
console.log(`Wake up after ${obj.val}`);
setTimeout(function () {
recursive();
}, obj.val * 1000)
} else {
_eat(obj.val);
recursive();
}
}
}
return this;
}
LazyPig('Peggy').sleep(5).eat('dinner').sleep(1).eat('supper');









网友评论