Axios调用始终以then()回调结束

时间:2019-07-24 14:26:31

标签: vue.js axios vuex

我正在调用此Vuex动作,该动作触发了放置在try / catch块中的Axios请求。

我这样称呼:

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,
    })
  }
},

我的API返回错误,该错误在catch {}块的Vuex操作中被拦截。

为什么仍然调用.then(response)回调?当然,响应是空的。

我希望会叫.catch(error)吗?

1 个答案:

答案 0 :(得分:1)

您可以再次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
  }
}