• .then返回的新promise的结果状态由什么决定???


    (1)简单表达:由.then内指定的回调函数(执行的回调函数)的返回结果来决定。

    (2)详细表达:

    1、回调函数没有返回值:返回一个状态resolved,value为undefined的新promise实例对象

    2、回调函数如果抛出异常(throw new Error('error')):返回一个状态rejected,reason为抛出的异常值( new Error()内的值)的新promise实例对象

    3、回调函数如果返回的是非promise的任意值:返回一个状态resolved,value为返回值的新promise实例对象

    4、回调函数如果返回值是一个新的promise实例对象(这个实例对象状态改变以后再将状态结果向下一个then传递):这个被返回的promise实例对象的结果就会成为.then返回的新promise的结果

      <script>
        //情况1:调用.then方法的promise实例对象没有return任何值(返回成功状态:value值为undefined)
        let P1 = Promise.resolve(1) //成功
    
        P1
          .then(value => console.log('成功',value), reason => console.log('失败',reason)) //'成功',1 
          .then(value => console.log('成功',value), reason => console.log('失败',reason)) //'成功',undefined
          .then(value => console.log('成功',value), reason => console.log('失败',reason)) //'成功',undefined
    
        // 情况2: 调用.then方法的promise实例对象没有return一个非失败值( 返回成功状态: value值为return的值)
        let P2 = Promise.resolve(1) //成功
    
        P2
          .then(value => {
            console.log(value)
            return 99
          }, reason => {
            console.log(reason)
          }) //'成功',1 :return 99
          .then(value => console.log('成功'value), reason => console.log('失败',reason)) //'成功',99 :未return任何值
          .then(value => console.log('成功'value), reason => console.log('失败',reason)) //'成功',undefined
    
    
        //情况3:调用.then方法的promise实例对象return失败值(返回失败状态:value值为return的失败值)
        let P3 = Promise.resolve(1) //成功
    
        P3
          .then(value => {
            console.log('成功',value)
            return Promise.reject('error')
          }, reason => {
            console.log(reason)
          }) //'成功',1 :return Promise.reject('error'),即失败值'error
          .then(value => console.log('成功',value), reason => console.log('失败',reason)) //'失败',error :未return任何值
          .then(value => console.log('成功',value), reason => console.log('失败',reason)) //'成功',undefined
      </script>
    
  • 相关阅读:
    Topcoder Arena插件配置和训练指南
    [POJ] 3277 .City Horizon(离散+线段树)
    C++ STL算法系列 unique
    C. Polycarpus' Dice
    Codeforces Round #298 (Div. 2) B. Covered Path
    Matlab 2012a 下载和安装教程
    hdu 5203
    ....
    乐观锁vs悲观锁, 集群vs分布式 , 微服务, 幂等性
    正向代理 vs 反向代理
  • 原文地址:https://www.cnblogs.com/xjt31/p/14016210.html
Copyright © 2020-2023  润新知