簡體   English   中英

可觀察的最佳實踐

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM