3-3应该主要考察Promise then的原理以及链式构造,以下是我的实现: class U{ constructor () { this.promise = null } applyPromise (fn) { if(!this.promise) { this.promise = new Promise((resolve)=>fn(resolve)) }else{ this.promise = this.promise.then(()=>new Promise((resolve)=>fn(resolve))) } } timeout(time) { this.applyPromise((resolve)=>setTimeout(()=>resolve(),time)) return this } print() { this.applyPromise((resolve)=>{ console.log(...arguments) resolve() }) return this } } let u = new U() u.timeout(2000).print('haha').timeout(3000).print('jaja') 原理:通过函数构造以下结构 new Promise((resolve)=>{ console.log(1) setTimeout(()=>resolve(),1000) }).then(()=>{ console.log(2) return new Promise((resolve)=>setTimeout(()=>resolve(),2000)) }) .then(async ()=>{ console.log(3) return new Promise((resolve)=>setTimeout(()=>resolve(),3000)) })
点赞 1

相关推荐

牛客网
牛客企业服务