【问题标题】:How can I optimize this getter performance issue?如何优化此吸气剂性能问题?
【发布时间】:2021-03-29 07:20:58
【问题描述】:

在使用 NgRX 存储的角度组件中,我有这个模板

<p>{{ someObservable | async | assertNotNull }}</p>

来自下面的getter

get someObservable(): Observable<number> {
    return this.store.pipe(select(state => state.myObservableValue));
}

问题在于它在每个更改检测周期都返回一个新的 Observable,并且异步管道每次都取消订阅/订阅。

如何以优雅且符合性能的方式改进这一点?

【问题讨论】:

    标签: angular typescript performance ngrx


    【解决方案1】:

    使其成为普通的只读属性

    public readonly someObservable: Observable<number> = this.store.pipe(select(state => state.myObservableValue));
    

    【讨论】:

    • 谢谢你现在能给我一些关于只读道具如何保存关于更改检测周期的性能的更多解释吗?
    • 它的值在对象初始化期间只被赋值一次,每次访问都没有getter调用。
    • 但是它的值会随着状态值的变化而更新吗?
    • 是的,select 就是这样做的。每次this.store 发出一些东西,它都会返回state.myObservableValue 的相关形状。你应该试试看它是如何工作的。
    猜你喜欢
    • 2018-04-05
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    相关资源
    最近更新 更多