promise即走then又走catch的原因

1. then中有错误,Promise会自动捕获内部异常,并交给rejected响应函数处理。

this.getData().then(res => {
  const a = null
  console.log(a.b) // 明显的错误会走到下面的catch
}).catch(err => {
  console.log('catch err')
})

2. catch后面又写then

vue中一般api请求放在actions中
action.js:

        getData({ commit }, params = {}) {
            return Api.getData(params).then((res) => {
                return res
            }).catch(err => {
                // 如果接口出错走了catch
            })
        },

index.vue:

init() {
  this.getData().then(res => {
// 如果上面走了catch,这边的then也会执行
    console.log('then again')
  })
}

推荐阅读更多精彩内容