手写一个 promise 2019-07-09

2019-07-09  本文已影响0人  八喜_ne
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;
上一篇 下一篇

猜你喜欢

热点阅读