【发布时间】:2021-10-23 18:15:09
【问题描述】:
我想知道如何在不触发许多事件的情况下更新订阅中的 observable。
在这个例子中,我订阅了area: Observable<Area>,如果区域发生变化,我想更新theme: Observable<Theme>。 distinctUntilChanged() 应该只在值发生变化时才触发订阅,但每次 area 更新时,theme 的更新量都会增加一。
observeArea(): void {
this.area
.pipe(distinctUntilChanged())
.subscribe(area => {
this.themeService.updateTheme({primaryColor: area.color}); // should happen only once per area change
})
}
是否有任何“正确”的方式来做到这一点,而不会触发无休止的主题更新?
【问题讨论】:
-
area似乎是一个对象,如果area是不可变的distinctUntilChanged应该可以正常工作 -
你只是想观察area.color吗?
-
您必须通过对象比较来观察 distinctUntilChanged,如果您要发出一个新对象,即使所有值都相同,它也是一个不同的对象。
标签: javascript angular typescript rxjs observable