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...的应用场景大多是连锁请求