1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| class LazyManClass { constructor(name) { this.taskList = []; this.name = name; console.log(`Hi I am ${this.name}`); setTimeout(() => { this.next(); }, 0); } eat (name) { var that = this; var fn = (function (n) { return function () { console.log(`I am eating ${n}`) that.next(); } })(name); this.taskList.push(fn); return this; } sleepFirst (time) { var that = this; var fn = (function (t) { return function () { setTimeout(() => { console.log(`等待了${t}秒...`) that.next(); }, t * 1000); } })(time); this.taskList.unshift(fn); return this; } sleep (time) { var that = this var fn = (function (t) { return function () { setTimeout(() => { console.log(`等待了${t}秒...`) that.next(); }, t * 1000); } })(time); this.taskList.push(fn); return this; } next () { var fn = this.taskList.shift(); fn && fn(); } } function LazyMan(name) { return new LazyManClass(name); } LazyMan('Tony').eat('lunch').eat('dinner').sleepFirst(5).sleep(4).eat('junk food');
|