手写一个 promise 2019-07-09

function Promise(executor) {
  let self = this;
  self.status = 'peding';
  self.value = null;
  self.reason = null;
  function resolve(value) {
    if (self.status === 'peding') {
      self.value = value;
      self.status = 'resolve';
    }
  }
  function reject(reason) {
    if (self.status === 'peding') {
      self.reason = reason;
      self.status = 'rejectd';
    }
  }
  // 这里对异常进行处理
  try {
    exector(resolve, reject);
  } catch (e) {
    reject(e);
  }
}
Promise.prototype.then = function(onFulfilled, onReject) {
  let self = this;
  if (self.status === 'resloved') {
    onFulfilled(self.value);
  }
  if (self.status === 'rejected') {
    onReject(self.reason);
  }
};

module.exports = Promise;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容