蝴蝶不菲
2023-02-24 16:43:48
我知道有些運算符會自動完成,例如 forkJoin,但據(jù)我所知,還有其他運算符永遠不會完成,必須取消訂閱以防止任何訂閱泄漏,例如 combineLatest。有什么好的方法可以判斷哪些必須取消訂閱,哪些是安全的?或者至少是他們的完整列表?我正在努力從文檔中獲取此信息。我對 RxJS 還是很陌生,所以如果我似乎誤解了什么,請告訴我。請注意:我知道如何使用,| async但我正在處理一個現(xiàn)有項目,目前無法使用它。我也知道并正在使用takeUntil該方法來代替該unsubscribe方法,因此這與該方法無關(guān)。我只想知道在使用其中一個 RxJS 運算符之后何時需要使用takeUntil/ 。unsubscribe
1 回答

慕的地8271018
TA貢獻1796條經(jīng)驗 獲得超4個贊
forkJoin
實際上不會自動完成。這取決于它正在修改以完成的可觀察對象。如果這些 observables 沒有完成,則forkJoin()
. 實際上,combineLatest
具有相似的品質(zhì)。
通常,所有 RxJS 提供的運算符都會創(chuàng)建在原始可觀察對象關(guān)閉時關(guān)閉的可觀察對象 - 或者至少其中之一。
實際上,這意味著開發(fā)人員使用 RxJS 來理解他們傳遞給操作員的可觀察對象的行為。流有可能永遠被卡住嗎?在那種情況下,我們將要修改它來處理這個問題——也許它會在 5 秒無活動后關(guān)閉。
重點是操作員要么尊重輸入可觀察對象的完成,要么修改它(可能通過提前完成),因為這是他們設(shè)計的目的。后一類最常見的例子包括“takes”:take
, takeWhile
, takeUntil
。
花足夠的時間在圖書館 - 閱讀每個操作員的文檔,在代碼中玩弄它們,或者在這里詢問是否有特定的東西沒有意義,你會變得非常熟悉哪些是哪些。
添加回答
舉報
0/150
提交
取消