Promise.all的参数执行顺序的问题

不明白Promise.all的参数有一个失败的话,后阻塞后面的参数执行吗?
比如参数数组是[promise1, promise2, promise3],响应速度是promise1快于promise2快于promise3。

执行后promise1成功了,promise2失败了,这时候promise3还会执行完吗?promise2的失败是不是既会把Promise.all的状态变为reject,还会阻塞promise3的执行?promise3即使能成功也不会执行呢?

阅读 1.9k
2 个回答

不阻塞,任何一个promise reject或者resolve,对别的promise不影响,仅仅影响Promise.all返回的promise

不会阻塞,全都会执行。只要全部成功,promise.all就成功了,如果其中一个失败了,catch一下也表示成功

Promise.all([
    demo1(),
    demo2().catch(e => '出错了'),
    demo3(),
])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题