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
(您需要使用原生浏览器获取的实现或者它会抛出一个错误)
谢谢你,它确实有效。你知道如何处理角2 http.get而不是获取? –
@MikhailLinkov我很高兴它帮助!我是一个热爱RxJS的React人。我不知道Angular的方法。但是如果'http.get'返回一个承诺,你可以用catch来处理它。如果它返回一个可观察的错误,根据你的需要有不同的方法来处理它。 –
Angular 2 http返回observable,第一种方式是调用toPromise,但你说trere是不同的方式,第二个是重新订阅)我也很好奇知道它是错误的还是功能这个switchMap的行为错误,因为没有调用onError后的onComplete回调 –