我对rxjs Observable中的switchMap感到困惑:
例如我有下一个代码:
Observable.fromEvent(button, 'click')
.switchMap(() => Observable.fromPromise(fetch('http://return-error.com')))
.subscribe(
(response) => {
console.log(response);
},
(error) => {
console.log(error);
}
);
如果我从fetch中收到错误,则订阅会中断。那么有没有办法处理它不为任何错误创建新的订阅?
我甚至试图捕获错误并返回Observable,但无论如何订阅都会中断。
upd:如何处理angular 2 http.get而不是fetch?
答案 0 :(得分:1)
如果你在问这些问题时做一个Bin,它总会更有帮助。我在这个上为你做了。
您只需要在提取调用中吞下错误。 E.g。
fetch('bad-url').catch(err => 'Error but keep going')
这是演示。单击文档(输出)以触发事件。
http://jsbin.com/vavugakere/edit?js,console,output
(您需要一个具有原生Fetch实现的浏览器,否则它会抛出错误)