[英]Observable best practice
在我當前的項目中,我有一個可觀察到的返回值,並且我必須根據該可觀察到的返回值更新本地變量。
我看到了兩種方法,要么直接訂閱我的可觀察對象,要么使用pipable運算符。
根據您的經驗/知識,最佳實踐是什么?
第一種方法(直接訂閱):
this.myObservable$.subscribe(value=> {
this.myValue = value;
});
第二種方法(使用可點運算符):
this.myObservable$.pipe(
tap(value=> this.myValue = value)
).subscribe();
我認為兩者都是有效的,但是在這種特定情況下,我將使用第一種方法並在subscription塊中進行工作。 原因是意圖更明確。
“敲擊”用於產生副作用,但是您在這里沒有產生副作用,因為在敲擊之后不再進行任何邏輯操作。 您正在執行的操作是使用未包裝的最終值執行操作,這就是訂閱塊的作用。
如果必須強制更新局部變量,我考慮在pipe
執行此操作。 我可能對同一可觀察對象有多個訂閱,但我可能忘記了更新其中任何一個的局部變量。 在Observable中注意這一點是好的。
myOb$ = this.myObservable$.pipe(
tap(value=> this.myValue = value)
)
以您為例,如果您未對Observable進行任何更改,則可以使用tap()
代替map()
考慮到您要更新一個Observable所在類的變量,而不是在其預訂的地方,那么這就是您的方法。 假設服務中存在一個Observable,並且有多個組件在訂閱它,每次發射后,都必須更新該服務的變量。
如果局部變量屬於預訂Observable的類,那么在管道中進行此操作當然是沒有意義的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.