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, иначе он выдаст ошибку)

Другие вопросы по тегам