promisepromise源码解析之A+规范

promise源码解析之A+规范
  • 实现promise
  • Promise是实现异步比较有意思的类,在日常开发中,它也给我们带来不一样的体验,接下来让我们了解一下Promise对象及promiseA+规范吧
  • promise概念
  1. then方法函数回调函数或者方法
  2. thenable 有着then函数的方法
  3. value是成功状态的值,通过resolve
  4. reason失败状态的rejected
  5. exception抛异常
  • 状态机
  1. pedding初始态
  2. fulFilled成功后状态
  3. rejected失败后的状态
  • 上面的概念解释完了,接下来讲讲promise的执行逻辑吧,pedding是通过promise构造函数执行的初始化状态
let a = new  Promise(()=>{})
// Promise { <pending> }

而状态的改变需要通过resolve或者reject函数去改变,内部实现如下:

resolve(v){
    if(this.status === pedding){
        this.status === fulfilled
        this.value =  v
    }
}

内部实现是可以通过监听内部状态值的变化,去实现执行then方法的回调
如何去实现呢?
一般通过初试定一个成功或者失败的回调的队列,去判断队列里的回调是否存在去遍历执行,怎样执行呢,通过监听状态值的变化去执行

then

  • then方法里其实写了个微任务方法去执行,then方法里存在两个回调onFullfiled和onRejectfiled这两个回调执行,是需要状态达到对应的值才会执行,当状态还是pedding值时,这两个回调会被存在缓存队列里面,监听到状态变化时,才会去执行相应的状态;当状态到了fullfiled或者reject时,就会执行相应的OnFullied或者OnReject方法;其实在then方法里会生成一个新的promise对象,那生成新的promise对象,拿他内部又是如何处理的呢?

resolvePromise

  • resolvePromise它的到来是为了解决新生成promise的解析问题,在resolvePromise内部实现是通过各种判断内部promise对象执行的,具体执行的,resolvePromise提供是个参数:promise2,x,resolve和reject,promise2是新生成的promise对象,x是onFullFiled或者onReject回调值,通过判断x和promise2的值去执行相关的方法

总结

  • 基本方法promise构造函数,resolve,reason,监听状态值方法,then, resolvePromise这几个方法构建promise的内部机制,接下来解析如何去实现promise,promise还会有哪些问题,接下来在promise解析(二)中进一步讲解。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值