(前端)手写一个最最简单promise

Promise 是异步编程的一种解决方案,比传统的解决方案—— 回调函数和事件——更合理
和更强大。所谓 Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是 一个异步操作) 的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。 Promise 提供统一的 API ,各种异步操作都可以用同样的方法进行处理。
特点:
1 、 自己身上有 all 、reject 、resolve 这几个方法
2 、原型上有 then 、catch 等方法
3 、一旦建立,就无法取消,这是它的缺点

// 1. promise 就是一个类 可以new
// 2. promise有三个状态 pending(等待) resolve(成功) reject(失败) 一旦pending进入一个状态,则不再改变
// 3. 用户自定义成功和失败以及成功和失败的原因
// 4. promise默认执行器executor 立即执行
// 5. promise的每个实例都有一个then方法,参数有两个,一个是成功的回调,一个是失败的回调

const PENDING = 'PENDING';
const RESOLVE = 'RESOLVE';
const REJECT = 'REJECT';
console.log('my')
class Promise {
  constructor(executor){
    this.status = PENDING; // 当前状态
    this.value = undefined; // 成功的返回值
    this.reason = undefined; // 失败的返回值
    let resolve = (value) => {
      if (this.status === PENDING) {
        this.status = RESOLVE;
        this.value = value;
      }
    }
    let reject = (reason) => {
      if (this.status === PENDING) {
        this.status = REJECT;
        this.reason = reason;
      }
    }

    try {
      executor(resolve, reject); // executor立即执行
    } catch (e) {
      reject(e);
    }

  }

  then(onFulfilled, onRejected){
    if (this.status === RESOLVE ) {
      onFulfilled(this.value)
    }
    if (this.status === REJECT ) {
      onRejected(this.reason)
    }
  }

}

module.exports = Promise;

由于promise对于前端很重要,害怕面试需要手写一个所以。。。。在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值