2017-04-14 11 views
0

は私が観察可能rxjsでswitchMapについての混乱を持っている: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:フェッチするのではなく角2のhttp.getを処理するにはどうすればよいですか?

答えて

1

これらの質問をするときにビンを作成すると、いつでももっと役立ちます。私はあなたのためにこれをしました。

フェッチ呼び出しでエラーを取り込むだけで済みます。例えば。

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

ここでデモがあります。ドキュメント(出力)をクリックしてイベントを発生させます。

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

(あなたが実装を取得したり、エラーがスローされますネイティブとブラウザが必要です)

+0

それは実際に動作する、ありがとうございました。フェッチではなく角2のhttp.getの場合の対処方法を知っていますか? –

+0

@MikhailLinkov私はそれが助けてうれしい!私はRxJSを愛するリアクションの男です。私はAngularの方法を知らない。しかし、 'http.get'が約束を返すならば、catchでそれを扱うことができます。観察可能なエラーが返された場合は、必要に応じてさまざまな処理方法があります。 –

+0

角2のHTTPは観測可能で、最初の方法はtoPromiseを呼び出しますが、trereは異なる方法であり、2番目は再サブスクリプションです)また、コールがないので、バグであるかswitchMapのこの動作が不思議ですonErrorの後の​​onCompleteコールバック –

関連する問題