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&(17273)#39;).timeout(3000).print('jaja&(17274)#39;) 原理:通过函数构造以下结构 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)) })