await-to-js代替try..catch..捕获异常

在开发中我们经常使用async和await关键词解决异步任务,但是不能捕获错误信息,解决 async await 发请求,处理异常时候多出 try catch 代码块问题

使用 try,catch捕获错误信息

import request from '@/utils/request'
export default {
  name: 'HomePage',
  async created () {
    try {
      const res = await request({ url: 'v1_0/channels2' })
      console.log('成功', res.data)
    } catch (e) {
      console.log('失败', e.message)
    }
  }
}

安装

npm i await-to-js --save 

使用 await-to-js捕获错误信息

import request from '@/utils/request'
import to from 'await-to-js'
export default {
  name: 'HomePage',
  async created () {
    const [err, res] = await to(request({ url: 'v1_0/channels' }))
    if (err) console.log('失败', err.message)
    else console.log('成功', res.data)
  }
}

优化await-to-js的使用(解决每次使用时都需导入await-to-js库)

import axios from 'axios'
import store from '@/store'
import router from '@/router'
import to from 'await-to-js'   // 导入 await-to-js
 
// 新建axios实例
const instance = axios.create({
  baseURL: 'http://geek.itheima.net/',
  timeout: 5000
})
 
// 请求拦截器
instance.interceptors.request.use(config => {
  const token = store.state.user.token
  if (token) config.headers.Authorization = `Bearer ${token}`
  return config
}, err => Promise.reject(err))
 
// 响应拦截器
instance.interceptors.response.use(res => res, err => {
  if (err.response && err.response.status === 401) {
    // token 失效
    store.commit('user/setToken')
    router.push('/login?returnUrl=' + encodeURIComponent(router.currentRoute.fullPath))
  }
  return Promise.reject(err)
})
 
// 导出一个新 axios 实例调用接口的函数,返回值promise
export default ({ url, method = 'get', params, data, headers }) => {
  const promise = instance({ url, method, params, data, headers })
  return to(promise)    // 使用 await-to-js
}
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值