Promise 发表于 2019-05-11 Promise 是一个异步操作返回的对象,用来传递异步操作的消息。根据自己对 Promise 的理解,实现一个Promise :Promise 有三种状态:Pending 初始态; Fulfilled 成功态; Rejected 失败态。123456789101112131415161718192021222324252627282930313233343536function Promise(executor) { let self = this; self.status = 'pending'; //等待态 self.value = undefined; //成功的返回值 self.reason = undefined; //失败的原因 function resolve(value){ if(self.status === 'pending'){ self.status = 'resolved'; self.value = value; } } function reject(reason) { if(self.status === 'pending') { self.status = 'rejected'; self.reason = reason; } } try{ executor(resolve, reject); }catch(e){ reject(e);// 捕获时发生异常,就直接失败 }}//onFufiled 成功的回调//onRejected 失败的回调Promise.prototype.then = function (onFufiled, onRejected) { let self = this; if(self.status === 'resolved'){ onFufiled(self.value); } if(self.status === 'rejected'){ onRejected(self.reason); }}module.exports = Promise;