随意编辑标题,因为我不知道如何正确表达。我们正在使用React 6.13, Babel 7,Node 12好吧,我正在尝试重构我们的数千行代码,而我必须为重复代码做的一件事是创建一个try-catch-wrapper函数,因为我们对每个错误都做同样的事情。所以下面是包装函数:const tryToCatch = (func, data ,dispatch) => { try { func() console.log('mmmm') } catch (error) { console.log('Error: ', error) console.log(data) return handleError(error, data , dispatch) }}下面是我试图调用它的方式,我正在使用console.log(a)哪些打印:但它似乎从未进入CATCH,因为console.log('Error: ', error)并且 console.log(data)从未打印过。export const search = () => async dispatch => tryToCatch( async () => { //Get Games const { data } = await serverApi('GET', '/api/common/games') console.log(a) //a is undefined so it will try to catch error console.log("hello"); ..etc code }, dispatch, { filtersLoading: false } )
2 回答
慕森卡
TA贡献1806条经验 获得超8个赞
const tryToCatch = async (func, data ,dispatch) => { // Missing `async`
try {
await func()
console.log('mmmm')
} catch (error) {
console.log('Error: ', error)
console.log(data)
return handleError(error, data , dispatch)
}
}
繁星淼淼
TA贡献1775条经验 获得超11个赞
回调函数是异步的,try-catch 只能同步工作。您可以将 tryToCatch 设为异步函数并在 func() 调用之前添加 await。
const tryToCatch = async (func, data ,dispatch) => {
try {
await func()
console.log('mmmm')
} catch (error) {
console.log('Error: ', error)
console.log(data)
return handleError(error, data , dispatch)
}
}
参考:https ://javascript.info/try-catch
添加回答
举报
0/150
提交
取消