【发布时间】:2019-04-16 19:31:44
【问题描述】:
我有这个方法:
服务
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 捕获时,它应该停止,而不停止应用程序的操作。
我非常感谢任何可以解决我的这个问题的建议。谢谢。
【问题讨论】:
-
axios 默认返回一个promise,是否有理由将它再次包装在promise 中?
-
@RajaSekar 我遵循一些代码标准 :)
-
正如在副本中指出的那样,您无法阻止浏览器记录
net::ERR_CONNECTION_REFUSED错误。我很好奇你为什么认为这会阻止你的申请。您如何使用list()?您想要发生的事情与实际发生的事情是什么? -
@Phil 哦,所以浏览器记录错误是不可避免的。谢谢你帮我清理了那个。我正在使用模块存储中的 list() ,我的问题中的代码就像我的主服务文件中 get 方法的全局调用者。至于我的应用程序停止,在浏览器控制台中记录错误后,它应该向列表返回一条消息并在弹出消息中显示它,但事实并非如此。页面为空白,列表未呈现在屏幕上。我编辑了我的问题以澄清这一点:D
标签: javascript vue.js axios