Loading

async...await...全局异常捕获

async...await...全局异常捕获

全局方法

/**
 * 全局的异常捕获
 * @param {Function} func 传入的方法
 * @param  {...any} args 方法调用的参数
 * @returns {Array} [err, res]
 */
export async function asyncFunc(func, ...args) {
  try {
    const res = await func(...args)
    return [null, res]
  } catch (e) {
    return [e, null]
  }
}

组件使用

import asyncFunc from 'xxxx/xxx/xxx'
import { api, api1 } from 'api/index.js'

async function func() {
  const [err, res] = await asyncFunc(api)

  if (err) {
    // 错误处理
  }
  // 正常处理
  // 带参数接口的处理
  const [api1Err, api1Res] = await asyncFunc(api1, {id: xxx}, list: [1,2,3,4,5], isTrue: true)
  if (api1Err) {
    // 错误处理
  }
  //正常处理
}

错误可以在asyncFunc进行定义全局捕捉,毕竟async...await...的应用场景大多是连锁请求

posted @ 2020-09-21 23:46  Frank-Link  阅读(1876)  评论(0编辑  收藏  举报