这个问题在这里已有答案:
我有这个方法:
服务
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结果,是吗?
如果出现错误,则必须拒绝承诺,或者您可能希望捕获错误并使用默认值解决,但解决错误并没有多大意义。
您还可以像这样简化代码:
list(url) {
return axios.get(url).then((response) => {
return response.data;
}).catch((error) => {
return { items: [] }; // <--- default value
});
}
首先检查数据库连接
试试这个
async list(url){
try {
return await axios.get(url);
} catch(e) {
console.log('This is error:->', e);
}
}
你可以尝试下面:
catch(error => {
if (!error.response) {
// network error
this.errorStatus = 'Error: Network Error';
} else {
this.errorStatus = error.response.data.message;
}
})