我正在使用流行图书馆的所有方法' axios'处理我的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
});
所以,似乎只有一个错误已被捕获"。
我怎样才能抓住它们?或者也许有点。最终?
答案 0 :(得分:5)
问题(正如您所知)是,一旦第一个承诺拒绝,您将进入$2
阻止,从而无法在同一$1
中收集所有失败的回复。但是,您仍然可以手动处理失败的promise以聚合错误并在之后抛出。
检查一下这对你有用:
$3
如果至少有一个承诺失败,您将进入var rgx = /^(.*?>)(.*?)(<.*?)$/gm;
var str = `<start>Apple Bandana Cadillac<stop>
<stop>Grapes Trampoline Ham<stop>
<start>Kebab Matador Pencil<start>
op>Score False Razor<stop>
`;
var res = str.replace(rgx, `$2`);
console.log(res);
阻止。您可以通过查看catch
响应数组找到一个。
答案 1 :(得分:1)
由于Promise.all的快速失败行为,我认为这是不可能的。如果您的任何请求失败,它们将自动成为罪魁祸首和结果。
Promise.all([
Promise.reject(Error('1')),
Promise.reject(Error('2')),
Promise.reject(Error('3'))
]).then((results) => {
console.log(results)
}, (error) => {
console.log(error.message)
})
这个结果代码将始终打印1,因为它是第一个失败。我认为在回购请求上有类似的功能,他们说这是不可能的。
我打算将此作为评论但尚未获得足够高的声誉。