来个 js 大佬看下这个 Promise 问题?

为什么一下代码打印顺序不一样?

Promise.resolve().then(() => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(555)
    }, 100)
  }).then(res => {
    console.log('🚀 ~ setTimeout ~ res:', res)
  })
}).then(data => {
    console.log('🚀 ~ res:', data)
})
Promise.resolve().then(() => {
  new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(555)
    }, 100)
  }).then(res => {
    console.log('🚀 ~ setTimeout ~ res:', res)
  })
}).then(data => {
    console.log('🚀 ~ res:', data)
})
阅读 3.4k
3 个回答

image.png

不管上面的 Promise 是啥,总之你 return 了,那不就链式了么,那你下面的 .then 无论如何都得等上面的 Promise resolve 后才能执行啊……

官网示例里有说。
then(a).then();
a是函数并且返回值是 Promise , 那就会用a的返回值调用后续的then
不然的话then会隐式的返回 Promise.resolve(b) , b就是aa的返回值。
应该是这样吧。

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