我想在flatMap中有一個條件檢查第一個observable返回的內容。如果條件不滿足,我想打破並導航到不同的頁面。rxjs條件裏面的平面圖
this.service.getData(id)
.flatMap((data) => {
if (!data) {
return Observable.throw(new NoDataFoundError());
}
return Observable.forkJoin(
this.service.getData2(id2),
this.service.getData3(id3),
);
})
.subscribe(
([data2, data3]) => {
this.data2= data2;
this.data3= data3;
},
(err) => {
if (err instanceof NoDataFoundError) {
this.router.navigate(...);
}
}
);
目前我拋出具體的錯誤和追趕它不過因爲它不是的代碼,可能會引發錯誤的唯一片和如果不結垢,我不喜歡這種解決方案。
我想過filter或takeWhile操作符,但是我將無法執行重定向。
我也想過要返回Observable.of,而不是拋出(在第4行),但是接下來我將不得不在做訂閱的時候也這樣做。
代碼看起來相當不錯原樣。你能否詳細說明你的擔憂?您可以使用幾種不同的模式,但這取決於還在發生什麼。 –