比如我有以下代码:
async function check(){ let promises = _.map(rules, async(rule) => { throw new Error('aaaaaa'); }); return promises; } async function doCheck(){ let result; try{ result = await Promise.all(check()); } catch(e){ console.log('error occurs'); } }
上面代码执行的时候 console.log('error occurs')是捕获不到的,我有什么办法可以拿到check()方法中报出的异常呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
要获取async函数的返回值,调用的时候,必须要await才能获取,否则获取到的是一个Promise封装过的对象,应该改成这样:
上面那样写是对了,不过显得冗余了,因为check函数本身(排除内部函数的代码)并没有await操作,其实不必声明为async,可以去掉check的async声明。
或者改成这样,把Promise.all写在check里,我觉得这样更好。