2017-09-07 11 views
-1

を生成する際に、各一つはデータ又はこれ等のエラーで観察を返すことができるいずれかの方法により製造されたデータを取得:角度がRxJsを観察ストリームを合わせ、流れの1つは、私は2つの観察ストリームを有するエラー

getData(type: string, id: string): Observable<any> { 
    return this.http.get([apiUrl, 
         this.getUrl(type, id)].join('/')); 
} 

そしてストリームは、次のとおりです。

stream1$ = getData('data1, 'abcd'); 
stream2$ = getData('data2', 'zre4'); 

私は1つに、これらの2つのストリームを結合する方法が必要つの要求は、私は404エラーを取得する失敗したとき、私は、onErrorメソッドを.zipファイルと.combineLatestを使用しようとしたが、していますコールバックが呼び出され、成功したget要求ストリームのデータが失われます。私が必要とするのは、ストリームの1つが404エラーを生成しても、それらを結合してデータを取得する方法です。

ありがとうございます。

答えて

0

.mergeのようないくつかのmothodsがありますが、あなたは結果の両方をマージし、ため

Observable.merge(stream1$ = getData('data1, 'abcd'), 
stream2$ = getData('data2', 'zre4')).subscribe((result) => { 
consloe.log(result) 
}); 

documetationを使用するストリームデータの単一のセットを取得することができ合併のため.. を使用することができますrxjsで利用可能.flatMaprxjs merge。要件がそのような場合に備えて、flatMapを使用することができます。私はそうのようにそれらをマージする前に、両方のストリーム上のキャッチ演算子を使用して問題を解決するために管理anynone興味のために

0

stream1$ = getData('data1, 'abcd').catch((error) => { 
    return Observable.of(error); 
}); 

stream2$ = getData('data2, 'zre4').catch((error) => { 
    return Observable.of(error); 
}); 

この方法でマージされた観測可能では「良い」ストリームのデータを取得する場合でも、もう1つは失敗します。詳細はここで見つけることができます:

https://chrisnoring.gitbooks.io/rxjs-5-ultimate/content/error-handling.html

おかげ

関連する問題