0

J'ai une confusion au sujet switchMap dans rxjs Observable:rxjs switchMap comportement onerror

par exemple i ont le code suivant:

Observable.fromEvent(button, 'click') .switchMap(() => Observable.fromPromise(fetch('http://return-error.com'))) .subscribe( (response) => { console.log(response); }, (error) => { console.log(error); } ); Si je reçois une erreur de chercher, l'abonnement est interrompue. Donc, est-il possible de gérer cela pour ne pas créer un nouvel abonnement pour une erreur?

J'ai même essayé d'attraper une erreur et de retourner Observable, mais l'abonnement est quand même interrompu.

upd: comment faire face à 2 http.get angulaire au lieu d'aller chercher?

Répondre

1

Il est toujours plus utile de créer une corbeille en posant ces questions. Je l'ai fait pour toi sur celui-ci.

Vous avez simplement besoin d'avaler l'erreur dans l'appel de récupération. Par exemple.

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

est ici la démo. Cliquez sur le document (sortie) pour déclencher l'événement.

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

(Vous aurez besoin d'un navigateur avec natif Fetch mise en œuvre ou il jetterez une erreur)

+0

merci, cela fonctionne vraiment. Savez-vous comment traiter en cas de 2 http.get angulaire au lieu de chercher? –

+0

@MikhailLinkov Je suis heureux que cela a aidé! Je suis un gars de React qui aime aussi RxJS. Je ne connais pas les méthodes d'Angular. Mais si 'http.get' renvoie une promesse, vous pouvez le gérer avec un catch. S'il renvoie une erreur observable, il existe différentes façons de gérer cela en fonction de vos besoins. –

+0

Angular 2 retours http observable, première façon est appel à Promise, mais vous dites que sont différentes façons, la seconde est la réinscription) aussi je suis curieux de savoir est-il bug ou fonctionnalité ce comportement de switchMap sur erreur, car il n'y a pas d'appel OnComplete callback after onError –