Javascript 如何访问promise.all中已解决的承诺es6

Javascript 如何访问promise.all中已解决的承诺es6,javascript,promise,Javascript,Promise,我正试图在有可能失败的地方兑现几项承诺。如果一个人确实失败了,我如何找出哪一个失败了,并且仍然能够获得没有失败的承诺的结果 现在,我正在使用Promise.all,但如果任何承诺失败,Promise.all会自动进入catch error块,因此我无法访问我的中的任何内容。然后,块,因此我无法访问任何成功的Promise结果。有人能帮忙吗 我的小提琴: 我的代码: let promise1 = new Promise((resolve, reject) => { console.log

我正试图在有可能失败的地方兑现几项承诺。如果一个人确实失败了,我如何找出哪一个失败了,并且仍然能够获得没有失败的承诺的结果

现在,我正在使用
Promise.all
,但如果任何承诺失败,
Promise.all
会自动进入catch error块,因此我无法访问我的
中的任何内容。然后,
块,因此我无法访问任何成功的Promise结果。有人能帮忙吗

我的小提琴:

我的代码:

let promise1 = new Promise((resolve, reject) => {
  console.log('-uno-')
  resolve('-promise 1 success')
})

let promise2 = new Promise((resolve, reject) => {
  console.log('-dos-')
  reject('-promise 2 fail')
})

let promise3 = new Promise((resolve, reject) => {
  console.log('-tres-')
  reject('-promise 3 fail')
})


let promise4 = new Promise((resolve, reject) => {
  setTimeout(() => {
    console.log('-cuatro-')
    resolve('-promise 4 success-')
  }, 3000)
})


Promise.all([promise1, promise2, promise3, promise4]).then((res) => {
  console.log('--done--', res)
}).catch((err) => {
  console.log('--err--', err)
})

这看起来不像是承诺,一切都是解决这个问题的最好办法。来自MDN():

如果任何已通过的承诺被拒绝,则无论其他承诺是否已解决,PROMICE.all立即以被拒绝的承诺的价值拒绝


所以Promise.all()适用于需要解决所有承诺的情况。你需要他们一起解决的原因是什么。如果没有,最好只给每个承诺它自己的。然后()和.catch()阻塞。

这看起来不像承诺。所有这些都是解决这个问题的最好方法。来自MDN():

如果任何已通过的承诺被拒绝,则无论其他承诺是否已解决,PROMICE.all立即以被拒绝的承诺的价值拒绝


所以Promise.all()适用于需要解决所有承诺的情况。你需要他们一起解决的原因是什么。如果没有,最好只给每个承诺它自己的.then()和.catch()块。

如果我理解正确,您希望访问所有已解决承诺的结果,即使有一个失败的承诺(包括那些可能在失败后解决的承诺,否则会……很复杂)——所以本质上您希望等待所有承诺,对吗?对我来说,这听起来很像<代码>承诺。所有意味着必须解决所有问题。您想要的是类似于“s
Promise.allSettled
”的东西,但这不是标准的,它是一个库。如果我理解正确,您希望访问所有已解决承诺的结果,即使有一个失败的承诺(包括那些可能在失败后解决的承诺,否则它将…复杂)--所以基本上你想等,好吗?对我来说,这听起来很像<代码>承诺。所有意味着必须解决所有问题。您想要的是类似于“s
Promise.allSettled
”的东西,但这不是标准的,它是一个库。