实现promise
class MyPromise { constructor(fn){ this.res = null; this.err = null; this.status = 'PENDING'; this.onResolveCallbacks = [];//存放成功的回调 this.onRejectCallbacks = [];//存放失败的回调 try { fn((res) => { this.status = 'resolved'; this.res = res; this.onResolveCallbacks.forEach(fn => fn()) }, (err) => { this.status = 'rejected'; this.err = err this.onRejectCallbacks.forEach(fn => fn()) }) } catch (error) { console.log(error) } } //成功的回调函数 then(onFulfilled, onRejected) { let self = this; if (this.status === 'resolved') {//成功 onFulfilled(self.res); } if (this.status === 'rejected') {//失败 onRejected(self.err); } //如果promise的状态是 pending,需要将 onFulfilled 和 onRejected 函数存放起来,等待状态确定后,再依次将对应的函数执行 if (this.status === 'PENDING'){ this.onResolveCallbacks.push(()=>{ onFulfilled(self.res) }) this.onRejectCallbacks.push(() => { onFulfilled(self.err) }) } } } let p = new MyPromise((resolve,reject)=>{ resolve('1') }) p.then((res)=>{ //成功的回调 console.log(res,'成功') },(err)=>{ console.log(err,'失败') })