• new Promise 出来的promise实例对象的默认状态是pendding,不能像then/catch方法一样返回一个新的promise实例对象!!!


    then/catch方法可以返回一个新的promise实例对象。then/catch方法指定的回调函数(执行)return的返回值可以决定这个新的promise实例对象的状态,这正是实现then方法链式调用的基础。

    promise实例对象默认状态是pendding,可以改变自身状态。但普通的promise实例对象不会返回一个新的promise实例对象,因此在promise实例对象的执行器函数return一个结果是没有意义的。promise实例对象应该关注的是自身的状态改变。

      new Promise((resolve, reject) => {
            return Promise.resolve(1) //return一个成功状态的promise实例对象:promise实例状态依然是pendding。
          })
          .then(value => {
            console.log('成功', value);
            return 5
          }, reason => {
            console.log('失败', reason);
          })
          .then(value => {
            console.log('成功hhh', value);
          }, reason => {
            console.log('失败', reason);
          })
    
        //无打印 
        //错误分析:认为promise实例对象也能返回一个新的promise实例对象,实际上这是then/catch方法的特点,和promise实例对象无关。promise实例对象的关注点应该是自身状态的改变,利用promise实例对象(执行器函数中)去return一个值去链式调用是没有意义的。promise实例对象可以改变自己的状态并且传递状态值。
    
        new Promise((resolve, reject) => {
            return 5 //return5
          })
          .then(value => {
            console.log('成功', value);
            return 5
          }, reason => {
            console.log('失败', reason);
          })
          .then(value => {
            console.log('成功hhh', value);
          }, reason => {
            console.log('失败', reason);
          })
    
        //无打印 
    
  • 相关阅读:
    Ruby系列:玩转闭包(Block,Proc,lambda)
    C# 中where关键字【MSDN】
    web应用程序中慎用static变量
    面向对象的javascript(一)
    原型模式 对象深浅复制
    存储过程:异地备份数据库文件
    正则表达式 [笔记]
    连接Oracle数据库代码
    在Eclipse下搭建Android开发环境教程,HelloWord
    Android开发之旅:环境搭建及HelloWorld
  • 原文地址:https://www.cnblogs.com/xjt31/p/14018533.html
Copyright © 2020-2023  润新知