Angular 2アプリケーションでRxJsを使用して複数のページのAPIからデータを並列に取得し、失敗したリクエストを今後の再試行で保存します。RxJsのフラットマップストリームで処理エラーが発生しました
これを行うには、flatMaping http getリクエスト(以下のコード)で生成されたエラーをキャッチし、さらにストリーム処理を続行します。エラーが発生した場合、私の現在の解決策はストリームを中断させます。
Rx.Observable.range(1, 5)
.flatMap(pageNo => {
params.set('page', ''+pageNo);
return this.http.get(this.API_GET, params)
.catch((err) => {
//save request
return Rx.Observable.throw(new Error('http failed'));
});
})
.map((res) => res.json());
上記の例では、ページ2と3のHTTPリクエストが失敗するとします。私はこれらの要求の両方に対してエラーを処理したい(後で再試行すると失敗した要求を保存して)他の要求を継続してjson()にマップさせたい。
キャッチの代わりに.onErrorResumeNext
を使ってみましたが、私はこの作業を行うことができません。
が、私はそれが動作していないようです、ということを試みました。エラーは、失敗した最初の要求に対してのみ記録されます。 –
どのようにエラーを記録していますか?簡単な購読で? – olsn
いいえ、私は上記のコードで '//save request'が書かれたエラーをログに記録しています –