【问题标题】:Proper Observable Management适当的可观察管理
【发布时间】:2019-02-27 20:14:59
【问题描述】:

我正在开发一个 Ionic 3 / Angular 应用程序。我在企业项目的Data Store Abstract Class 中遇到了一些代码。商店中的refresh 函数创建了一个const cachedObs. 我对可观察对象不是很熟悉,我的问题是,如果多次调用刷新函数,该函数是否会在后台创建多个可观察对象而不是重用一个可观察对象?这段代码的开发者也不确定。我们还没有遇到任何性能问题,但我想确保这段代码没有泄漏。

这些可观察对象不会取消订阅,因为它们会更新应用程序中的关键数据。对此的任何帮助表示赞赏。

public refresh(): Observable<T> {
    const cachedObs = Observable.fromPromise(this._storage.get(this._key).catch(() => this._initialState));
    cachedObs.subscribe(data => this.set(data ? JSON.parse(data) as T : this._initialState));
    return cachedObs;
};

【问题讨论】:

    标签: angular ionic3 observable observer-pattern


    【解决方案1】:

    所以,你肯定每次都在创建一个新的 observable,而不是重复使用同一个流。从好的方面来说,在这种情况下,它并不是一个真正的问题。如果一个 observable 完成,那么它会自动取消订阅所有订阅。

    fromPromise 是一种可观察的创建机制,它只会发出一个完成自身的值。所以不需要退订。

    您可以在 subscribe() 方法中证明这一点。它有 3 个参数,第一个是成功,然后是失败,然后是完整。所以你可以做 .subscribe(null, null, () => console.log("Complete"))。如果您看到完整的火灾,您就知道您不必担心泄漏!

    【讨论】:

    • 太棒了!非常感谢您的帮助和洞察力?
    猜你喜欢
    • 1970-01-01
    • 2020-06-28
    • 2020-07-27
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2019-09-09
    • 2011-06-09
    相关资源
    最近更新 更多