RXJS角度行为主题发出多个值

时间:2018-07-02 13:36:28

标签: angular rxjs behaviorsubject

enter image description here我使用BehaviorSubject在我的应用程序组件之间共享数据,由于BehaviorSubject多次发射相同值,所以我遇到了性能问题。例如,我调用http从后端获取团队对象并将其存储在behaviorSubject中,许多组件都订阅了此BehaviorSubject。每个组件都从订阅获取值,并对值进行一系列操作。问题的实质是,该值会发出多次,并且每个组件都会多次执行所有序列。我的猜测是BehaviorSubject发出的值是订阅者数。我在Google中找不到对我来说很奇怪的东西,我想念什么?

与部署相比,团队在本地产生价值的次数有所不同。您可以看到打印的“ refref返回值”是来自http的实际响应。

1 个答案:

答案 0 :(得分:0)

您可以通过仅接受不同于上一个值的值来部分修复它,从而连续跳过几次对相同值的求值。

此外,如果您查询的数据可以与之前的查询相同,则最好还是添加以下内容:

import { distinctUntilChanged } from 'rxjs/operators';

this.myService.myObservable
    .pipe(distinctUntilChanged())
    .subscribe(value => {
        console.log(value);
    })