rxjs switchMap的onerror行为

问题描述:

我对switchMap在rxjs而观察到的困惑:rxjs switchMap的onerror行为

,比如我有下面的代码:

Observable.fromEvent(button, 'click') .switchMap(() => Observable.fromPromise(fetch('http://return-error.com'))) .subscribe( (response) => { console.log(response); }, (error) => { console.log(error); } ); 如果我得到提取错误,订阅中断。那么是否有办法处理它,不会为任何错误创建新订阅?

我甚至试图捕获错误并返回Observable,但订阅无论如何都中断。

upd:如何处理angular 2 http.get而不是提取?

如果您在提出这些问题时创建了Bin,它总是更有帮助。我为你做了这个。

您只需要在获取调用中吞下错误。例如。

fetch('bad-url').catch(err => 'Error but keep going')

这里的演示。点击文档(输出)来触发事件。

http://jsbin.com/vavugakere/edit?js,console,output

(您需要使用原生浏览器获取的实现或者它会抛出一个错误)

+0

谢谢你,它确实有效。你知道如何处理角2 http.get而不是获取? –

+0

@MikhailLinkov我很高兴它帮助!我是一个热爱RxJS的React人。我不知道Angular的方法。但是如果'http.get'返回一个承诺,你可以用catch来处理它。如果它返回一个可观察的错误,根据你的需要有不同的方法来处理它。 –

+0

Angular 2 http返回observable,第一种方式是调用toPromise,但你说trere是不同的方式,第二个是重新订阅)我也很好奇知道它是错误的还是功能这个switchMap的行为错误,因为没有调用onError后的onComplete回调 –