【发布时间】:2018-06-28 08:02:49
【问题描述】:
我有兴趣在取消订阅 observable 时调用异步函数,但是,一旦取消订阅,我就无法以同步方式处理错误,例如我有以下代码,错误是没抓到。
const observable = Observable.of(true).finally( async () => {
throw new Error('what');
});
try {
observable.subscribe().unsubscribe();
} catch (e) {
console.log('We did not capture this');
}
在finally 中处理异步错误的可能方法是什么?
【问题讨论】:
-
从 RxJS 版本 6 开始,
subscribe调用永远不会抛出错误(除非明确启用了 deprecated, synchronous error handling),因此try/catch将无效。此外,finally将简单地忽略您的函数返回的承诺。它不期望一个,它也毫无意义。这样想:当调用finally的回调时,订阅结束;不会有订阅者收到您的错误(通过承诺拒绝)。
标签: error-handling promise rxjs