0
点赞
收藏
分享

微信扫一扫

浅析Promise的then方法

探头的新芽 2022-05-01 阅读 60

1.关于then

then方法的作用是为Promise对象添加状态改变时的回调函数。

2.then的返回值

then()方法的返回值也是一个promise对象,所以它支持链式写法。但是要注意的是它的返回值是一个新的promise对象,与调用then方法的并不是同一个对象

那么既然 p2也是一个promise对象,那么,p2的状态(promiseStatus)和值(promiseValue)又由什么决定呢?我们先上结论,随后分别逐一验证。

3.p2的状态和值的确定规则

(1)当p1的状态是pending,则p2的状态也是pending

如前面所示代码

(2)当p1的状态是resolved,then()会去执行f_ok,则p2的状态由f_ok的返回值决定。

         (2).1如果f_ok返回值不是promise对象,则p2的状态是resolved,且p2的promiseValue就是                     f_ok函数的return值。

        (2).2如果f_ok返回值是promise对象,则p2的状态及promiseValue以这个promise对象为准。

         

         (2).3如果f_ok这个函数内部发生了错误(或者是用户主动抛出错误),则p2的状态是                            rejected,且p2的promiseValue就是这个错误对象。

  (3)如果p1的状态是rejected,then()会去执行f_err,则p2的状态由f_err的返回值决定。

         (3).1如果f_err返回值不是promise对象,则p2的状态是resolved,且p2的promiseValue就是                     f_err函数的return值。

      (3).2如果f_err返回值是一个promise对象,则p2的状态及promiseValue以该promise对象为准。

 

       (3).3如果f_err这个函数内部发生了错误(或者是用户主动抛出错误),则p2的状态是                            rejected,且p2的promiseValue就是这个错误对象。

举报

相关推荐

0 条评论