rxjs switchMap onerror поведение
У меня путаница по поводу switchMap в rxjs Observable:
например у меня есть следующий код:
Observable.fromEvent(button, 'click')
.switchMap(() => Observable.fromPromise(fetch('http://return-error.com')))
.subscribe(
(response) => {
console.log(response);
},
(error) => {
console.log(error);
}
);
Если я получаю ошибку при получении, подписка прерывается. Так есть ли способ справиться с этим, чтобы не создавать новую подписку на любую ошибку?
Я даже пытался отловить ошибку и вернуть Observable, но подписка все равно прерывается.
upd: как бороться с угловым 2 http.get вместо fetch?
1 ответ
Это всегда более полезно, если вы делаете мусорное ведро, задавая эти вопросы. Я сделал это для тебя в этом.
Вам просто нужно проглотить ошибку в вызове fetch. Например
fetch('bad-url').catch(err => 'Error but keep going')
Вот демо. Нажмите на документ (выход), чтобы запустить событие.
http://jsbin.com/vavugakere/edit?js,console,output
(Вам понадобится браузер с собственной реализацией Fetch, иначе он выдаст ошибку)