我调用这个触发Axios请求的Vuex操作,该Axios请求放在try/catch块中。
我把这个叫做:
this.$store
.dispatch('api/get', { url: url })
.then(data => { console.log(data) })
.catch(error => { console.log(error) })
Vuex操作
async get({ commit }, payload) {
try {
let response = await this.$axios.get(payload.url, payload.data)
return response.data
} catch (e) {
commit('notifications/PUSH_ALERT', {
alert: e.response.data.message,
})
}
},
我的接口返回错误,该错误在catch {}
块中的Vuex操作中被截获。
为什么还要调用.then(response)
回调?当然,响应是空的。
我希望.catch(error)
会被调用?
发布于 2019-07-24 19:27:39
您可以像这样再次throw
它:
async get({ commit }, payload) {
try {
let response = await this.$axios.get(payload.url, payload.data)
return response.data
} catch (e) {
commit('notifications/PUSH_ALERT', {
alert: e.response.data.message,
})
// Throw error again when it is handled, so outer catch can handle it too
throw e
}
}
https://stackoverflow.com/questions/57185276
复制