• 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);
          })
    
        //无打印 
    
  • 相关阅读:
    创建窗体不抢夺焦点的方法
    控件绘制的四种方法
    ATL CAxWindow类创建问题一则
    PE文件版本那些事儿
    GDIPlus非典型误用一例
    stl 常用代码
    For each loop in Native C++
    win7 64 下 VS2008 调试、退出时错误的解决
    DailyWallpaper v1.03 released
    编程当道,学点Python技术好傍身
  • 原文地址:https://www.cnblogs.com/xjt31/p/14018533.html
Copyright © 2020-2023  润新知