gpt4 book ai didi

javascript - axios.all 传播并捕获所有

转载 作者:数据小太阳 更新时间:2023-10-29 05:14:09 25 4
gpt4 key购买 nike

我正在使用流行库“axios”的 .all 方法来处理我的 ajax 请求。

但是如果所有请求都得到 404,我该如何处理错误呢?

例如:

axios.all([
axios.get('http://some_url'),
axios.get('http://another_url'),
])
.then(axios.spread((someUrl, anotherUrl) => {
// ... boring stuff goes there
}))
.catch(() => {
//... error goes there
});

enter image description here

因此,似乎只“捕获”了一个错误。

我怎样才能捕获他们?或者也许有任何有点。终于?

最佳答案

问题(如您所知)是,一旦第一个 promise 被拒绝,您将进入 catch block ,从而无法在同一个 catch< 中收集所有失败的响应。但是,您仍然可以手动处理失败的 promise 以聚合错误并在之后抛出。

检查它是否适合您:

const promises = [
axios.get('http://some_url'),
axios.get('http://another_url'),
]
const promisesResolved = promises.map(promise => promise.catch(error => ({ error })))

function checkFailed (then) {
return function (responses) {
const someFailed = responses.some(response => response.error)

if (someFailed) {
throw responses
}

return then(responses)
}
}

axios.all(promisesResolved)
.then(checkFailed(([someUrl, anotherUrl]) => {
console.log('SUCCESS', someUrl, anotherUrl)
}))
.catch((err) => {
console.log('FAIL', err)
});

如果至少有一个 promise 失败,您将进入 catch block 。您可以通过检查 err 响应数组来找到一个。

关于javascript - axios.all 传播并捕获所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48681126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com