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);
      })

    //无打印 
原文地址:https://www.cnblogs.com/xjt31/p/14018533.html