zoukankan      html  css  js  c++  java
  • .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>
    
  • 相关阅读:
    poj 2757 : 最长上升子序列(JAVA)
    POJ 2760: 数字三角形
    poj 1664:放苹果
    Poj 2756:二叉树
    poj机上的JAVA那些事儿
    浅谈HASH算法与CSDN密码泄漏事件
    如何防范密码被破解
    [转载自百度文库]数组拷贝(System.arraycopy,深度拷贝)--数组
    Java数学计算
    fzu Problem 1396 Large Caclulating Work
  • 原文地址:https://www.cnblogs.com/xjt31/p/14016210.html
Copyright © 2011-2022 走看看