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...的應用場景大多是連鎖請求