私は、失敗する可能性のあるところでいくつかの約束を実行しようとしています。誰かが失敗した場合、どの人が失敗したのか、そして失敗していない約束の結果にまだアクセスできるようになるにはどうすればよいでしょうか?promise.allで解決された約束es6にアクセスする方法
現在、私はPromise.all
を使用していますが、約束が失敗した場合はPromise.all
が自動的にキャッチエラーブロックに入り、.then
ブロックから何もアクセスできないので、私は約束どおりにアクセスできません結果。助けてもらえますか?
マイフィドル:https://jsfiddle.net/9u2nL7zj/
マイコード:
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)
})
私が正しく理解していれば、失敗したものがある場合でも解決したすべての約束の結果にアクセスしたい場合(失敗したものの後で解決できるものを含むか、それ以外の場合は複雑です...)すべてを待つよね?私には、それは[その質問](http://stackoverflow.com/q/31424561/6730571)と非常によく似ています。 「Promise.all」は、すべてが解決しなければならないことを意味します。あなたが望むのは、[Q](https://github.com/kriskowal/q/wiki/API-Reference#promiseallsettled)の 'Promise.allSettled'のようなものですが、これは標準ではない、それはライブラリです。 –