趕上從BehaviorSubject錯誤由異步管簽約時,我有一個rxjs BehaviorSubject
我同意使用async
管從角2,我有一個catch
來處理它拋出最後的錯誤。 問題是,每當我得到一個錯誤,它就會啓動一個無限循環,因爲我的catch返回從BehaviorSubject
派生的Observable,我認爲當我返回catch
時,async
管道重新訂閱了可觀察值。無限循環對角2
代碼看起來大致是這樣的:
ListService - 是@Injectable
在那裏我有BehaviorSubject並與Observable
財產。
private listSubject: BehaviorSubject<IItem[]>;
public get listObservable() {
return this.listSubject.asObservable()
}
private error(error: IError) {
this.listSubject.error(error);
}
ListComponent - 是@Component
顯示列表中觀察到。你可以看到,我的catch返回當前可觀察對象,因爲它必須返回一個可觀察對象。所以,發生什麼是,當我發送this.listSubject.error(error)
代碼進入一個無限循環無限期調用catch
,因爲,就像我之前說過的,我認爲BehaviourSubject
重新拋出錯誤,因爲async
管道重新訂閱可觀察的catch
返回它。
我試圖在錯誤中返回以前的緩存陣列以返回Observable.of(error.cached)
,但我得到了一組全新的問題,因爲認爲異步沒有訂閱BehaviorSubject
了。
就像我之前說的,這是我真實代碼的粗略表示,但邏輯基本上是這樣。
我一直在嘗試各種不同的方法,但我無法設法得到這個無限循環停下來。
在此先感謝您的幫助。
拋出錯誤的類型是什麼,以及在錯誤的情況下,您希望代碼執行什麼操作? – KwintenP
任何錯誤,我在List服務中使用該錯誤函數傳遞錯誤,即使我只傳遞一個字符串,我也會遇到問題。但通常我傳遞api響應錯誤。 –