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