关于promise.then执行顺序的问题

function testPromise4 () {
  let promise = new Promise(resolve => {
    resolve(1);
  });

  promise.then(res =>{
    console.log('第1个then,返回的值为:', res);
    return 2;
  })
    .then(res => {
      console.log('第2个then,返回的值为:', res);
      return 3
    });

  return promise;
}

testPromise4().then(res => {
  console.log('第3个then,返回的值为:', res);
});

上面这段代码我原本以为执行后输出的结果是:

  • 第1个then,返回的值为:1
  • 第2个then,返回的值为:2
  • 第3个then,返回的值为:3

但实际结果却是:

第1个then,返回的值为:1
第3个then,返回的值为:1
第2个then,返回的值为:2

哪位大佬知道这是为什么?

阅读 2.5k
1 个回答

每个promise.then都会产生一个新的promise,所以返回promise和返回promise.then是不一样的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题