相当于带有Observables的Promise.try?

时间:2018-01-30 16:04:31

标签: promise rxjs observable bluebird

如何使用可能引发异常并通过可观察捕获机制处理此异常的函数启动Observable链?

示例:

createObservable(withFunctionThatThrowAnException())
            .catch( err => {})
            .subscribe(data => {})

如果withFunctionThatThrowAnException抛出一个异常,那么可观察链已经开始了,并且它是一个未捕获的异常,observable.catch无法捕获它。

使用bluebird和Promises,我会做到:

Promise.try(() => createObservable(withFunctionThatThrowAnException()))
            .then(data => {})
            .catch(err => {})

与Observables等效吗?

1 个答案:

答案 0 :(得分:3)

直接的等价物是defer,我想:

Observable.defer(() => createObservable(withFunctionThatThrowAnException()))
 .subscribe(console.log);