Skip to Content
class LazyMan { constructor(name) { this.name = name; this.task = []; // 任务队列 console.log(`My named ${name}`); // 这里使用异步调用next()是为了确保所有链式调用都被添加到task[]才开始执行任务 setTimeout(() => { this.next(); }); } sleep(time) { this.task.push(() => { console.log(`I am sleeping...`); setTimeout(() => { console.log(`after ${time} ms`); this.next(); }, time); }); return this; } eat(food) { this.task.push(() => { console.log(food); this.next(); }); return this; } next() { let fn = this.task.shift(); fn && fn(); // if(fn) fn() } } const lazyMan = new LazyMan("jack"); lazyMan.eat("apple").sleep(5000).eat("hamburger").sleep(3000).eat("pear"); // My named jack // apple // I am sleeping... // after 5000 ms // hamburger // I am sleeping... // after 3000 ms // pear
Last updated on