最近我在调试一段异步 NodeJS 代码时遇到了非常令人沮丧的事情:我认为肯定会被捕获的异常try..catch
正在泄漏,导致async_foo
函数外部出现未处理的 promise 错误。
async function async_foo() {
try {
await some_library.async_bar('some illegal argument');
} catch (err) {
console.error(err); // <- Whether this is called depends on async_bar's implementation !
}
}
从那以后,我了解到,由于 async..await 是如何通过 Promises 实现的,因此在 async JS 中有许多种方法可以让自己陷入困境,但仍然:
无论嵌套异步代码是如何实现的,是否有可能以绝对绝对始终处理嵌套异步代码错误的方式编写您的异步 JS 代码?基于库的解决方案很重要。