• .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>
    
  • 相关阅读:
    微信小程序通过CODE换取session_key和openid
    BZOJ1497[NOI2006]最大获利——最大权闭合子图
    Leetcode#149 Max Points on a Line
    IO流总结
    java基础比较好的笔记总结
    chrome web开发工具
    day 01 常量 注释 int(整型) 用户交互input 流程控制语句if
    10.2:异或树经验
    搜索+保存路径
    搜索+简单dp
  • 原文地址:https://www.cnblogs.com/xjt31/p/14016210.html
Copyright © 2020-2023  润新知