gpt4 book ai didi

javascript - axios 捕获错误然后再次抛出错误

转载 作者:行者123 更新时间:2023-12-02 23:50:10 24 4
gpt4 key购买 nike

我有这个方法:

服务

const errorData = {"message":"Error", "data": []};

list(url) {
return new Promise((resolve) => {
axios.get(url).then((response) => {
resolve(response.data);
}).catch((error) => {
resolve(errorData)
});
})
},

模块存储

 state: {
list: []
},
getters: {
list: state => state.list,
},
mutations: {
LIST(state, payload) {
state.list = payload || [];
},
}
actions: {
list({ commit }) {
commit('LIST', []);

return service
.list('api/list')
.then((list) => {
commit('LIST', list);
});
},
}

列表组件

this.$store.dispatch(`module/store/list`).then(() => {
setTimeout(() => {
var message = this.$store.getters['module/list'].message;
this.$refs.inform.open('Error', message).then(() => {
this.$router.push ({ path: "/" });
});
}, 1000);
})

注意:成功的API调用的response.data会返回一个与errorData结构相同的对象。

当我关闭调用 API 方法的服务器时,Axios 会捕获错误(如果有),但会抛出错误并停止应用程序的当前操作“net::ERR_CONNECTION_REFUSED”。我不知道在哪里可以捕捉到这个。我已经尝试使用与此相关的 Axios 在所有方法上附加捕获,但后来我无法捕获错误。当 Axios 最初捕获错误时,它应该停止,而不停止应用程序的操作。

我真的很感激任何可以解决我的这个问题的建议。谢谢。

最佳答案

您不应该解决错误。我假设调用 list 方法的代码不会期望出现错误作为 promise 结果,是吗?

如果出现错误,则必须拒绝 Promise,或者您可能希望捕获错误并使用默认值进行解析,但使用错误进行解析没有多大意义。

您还可以像这样简化代码:

list(url) {
return axios.get(url).then((response) => {
return response.data;
}).catch((error) => {
return { items: [] }; // <--- default value
});
}

关于javascript - axios 捕获错误然后再次抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55683491/

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