看着网上一个图片 ,感觉很好玩, 实现的效果。
function LazyMan(name) {
console.log(`启动函数${name}`)
return new app()
}
class app {
constructor() {
this.time = [];
this.fn = [];
this.index = 0;
this.sleepTime = 0;
this.timeOut = null;
}
sleep(ste) {
this.time[this.index] = ste * 1000;
return this;
}
eat(name) {
let t1 = this.time[this.index] || 0;
this.index++;
let f = () => {
let p = parseInt(t1 / 1000) + parseInt(this.sleepTime / 1000);
console.log(`${p>0?'等待了'+p+'秒,':''}${name}`)
}
let that = this;
this.fn.push(f);
clearTimeout(this.timeOut)
this.timeOut = setTimeout(() => {
that.fn.forEach((e, i) => {
let t2 = this.sum(this.time, i)
setTimeout(e, t2 + this.sleepTime)
});
}, 0)
return this;
}
sleepFirst(t) {
this.sleepTime = this.sleepTime + t * 1000;
return this
}
sum(arr, lh) {
var s = 0;
for (var i = lh; i >= 0; i--) {
s += arr[i] || 0;
}
return s;
}
}
LazyMan("Tony").eat('汉堡').eat('薯条').sleepFirst(1).sleep(1).eat("鸡腿")