繁体   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