封装Promise

class myPromise {
    constructor(callback) {
      this.callback = callback;
      this.status = 'pendding';
      this.result = null;
      this.err = null;
      this.resolveR = null;
      this.rejectR = null;
      this.resolve = val => {
          this.status = 'resolve';
          this.result = val;
          this.resolveR && this.resolveR(val);
      }
      this.reject = err => {
        this.status = 'reject';
        this.err = err;
        this.rejectR && this.rejectR(err);
      }
      this.callback(this.resolve, this.reject);
    }
    then(callback) {
      this.status === 'resolve' ? callback(this.result) : this.resolveR = callback;
      return new myPromise(this.callback);
    }
    catch(callback) {
      this.status === 'reject' ? callback(this.err) : this.rejectR = callback;
      return new myPromise(this.callback);
    }
  }
  new myPromise((resolve, reject) => {
    setTimeout(() => {
      resolve(1);
    }, 1000);
  }).then(res => {
    console.log(res)
  }).catch(err => {
    console.log(err)
  })

简单的总结,希望对大家有所帮助,如有不对的地方也烦请指出,谢谢!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 丁老师学习名言你用你会的知识去解释他, => 解释通了, 你就明白了=> 解释不通, 该学习了!! 继续.. ...
    wudimingwo阅读 1,738评论 0 0
  • 我画了两个中心图,第一个思维导图是课程的总结,中心图是一个冲破太阳的火箭,就像这次学习突破了自我一样,希望自己会像...
    美函0121阅读 4,367评论 1 1
  • 夜雨骤歇似寻常,半醒犹梦复黄粱。 拥被不觉晓风冷,辗转轻酣寐软床。 可怜梦中人难旧,涩如枳皮苦胜汤。 ...
    叶家三少爷阅读 3,012评论 0 0
  • 当你知道你在哪里? 才能去到你想要去的地方。 第一层 一直活在物质的世界里, 一辈子被物质假相迷惑所困, 全部精力...
    相逢一笑307阅读 1,094评论 0 0
  • 小镇风光 由于工作原因,我不觉在这个偏远的海滨小镇生活逾九年。听惯了清晨小鸟啁啾的吟唱,看惯了朝暮潮起潮落...
    禾木妈咪育儿记阅读 3,081评论 0 1

友情链接更多精彩内容