後,發現該溶液我寫了根據公認的答案小幫手ng2-rx-collector使它更容易使用。希望它能幫助一個人一次又一次面對同樣的問題。
原來的問題
假設我們有一個在炎熱的觀測兩個訂閱的組件。我們同意他們在ngOnInit
,爲了避免內存泄漏/意外的行爲在ngOnDestroy
退訂:
public ngOnInit() {
this.s1 = o1.subscribe(console.debug.bind(console));
this.s2 = o2.subscribe(console.debug.bind(console));
}
public ngOnDestroy() {
this.s1.unsubscribe();
this.s2.unsubscribe();
}
我愛的Rx,但我真的希望每一個我需要遵循這個時候自殺:
- 爲每個訂閱
- 分配此屬性訂閱創建私有財產訂閱(這看起來非常難看,因爲真正的邏輯進入右側)
- 從EAC退訂h訂閱破壞
有沒有什麼辦法可以改善呢?
E.g.在RxSwift他們有一個DisposeBag
爲了改進工藝,轉換爲打字稿是:
private let bag = DisposeBag();
...
o1.subscribe(...).addDisposableTo(bag);
,然後只摧毀它只有一次。問題是我找不到任何類似的Subscription
函數。
任何想法/提示將受到熱烈歡迎。
您可以在超類中創建一個數組,並將您的訂閱推送到此數組。然後在超類'ngOnDestroy'上,你可以從數組元素中取消訂閱。 – echonax
這並不能解決我需要將整個observable包裝在括號內等問題。我已經嘗試過這種方式,甚至寫了一個自動完成的小修飾器,但它看起來並不好看。 – smnbbrv