轻松上手promise原理(2):then的简单实现

本文深入探讨了Promise的then方法,包括onFulfilled和onRejected回调的处理,状态不可逆的特性,以及当未传递参数时的默认设置。文章还指出,自定义Promise中then的执行是同步的,需要通过setTimeout实现异步执行。通过在构造函数中保存pending状态的回调函数并在状态改变时执行,解决了处理pending状态的问题。最后,介绍了在then方法中处理pending状态的异步方法。
摘要由CSDN通过智能技术生成

在上一篇文章中,我们对于promise有了初步的认识,我们了解到promise是new出来的对象,有三个对应pedding,fulfilled,rejected的状态,在初始化时,拥有status和value和初始化参数executor,executor需要传入resolve和reject函数作为参数。、

在本节我们继续来探索promise的原理,在了解基本的promse构造后,我们来对then方法进一步介绍,我们知道then是用来处理resolve和reject函数的回调。那么首先我们来定义then方法.

1、then方法需要两个参数,其中onFulfilled代表resolve成功的回调,onRejected代表reject失败的回调。
then(onFulfilled,onRejected){
   }
2、我们知道promise的状态是不可逆的,在状态发生改变后,即不可再次更改,只有状态为FULFILLED才会调用onFulfilled,状态为REJECTED调用onRejected
then(onFulfilled,onRejected){
   
if(this.status == Promise.FULFILLED){
   
    onFulfilled(this.value)
}
if(this.status == Promise.REJECTED){
   
    onRejected(this.value)
}
}
3,then方法的每个方法都不是必须的,所以我们要处理当没有传递参数时,应该设置默认值
then(onFulfilled,onRejected){
   
    if(typeof onFulfilled !=='function'){
   
        onFulfilled = value => value;
    }
    if(typeof onRejected  !=='function'){
   
        onRejected = value => value;
    }
    if(this.status == Promise.FULFILLED){
   
         onFulfilled(this.value)
    }
    if(this.status == Promise
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值