适当的可观察管理

问题描述 投票:2回答:1

我正在研究Ionic 3 / Angular应用程序。我在企业项目的Data Store Abstract Class中遇到了一些代码。商店中的refresh函数创建了一个const cachedObs.我不太熟悉observables,我的问题是,如果多次调用refresh函数,这个函数是在后台创建多个observable而不是重用一个observable?此代码的开发人员也不确定。我们还没有遇到任何性能问题,但我想确保此代码不会泄漏。

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

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个回答
3
投票

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

fromPromise是一种可观察的创建机制,它只会发出一个完成自身的值。所以没有必要取消订阅。

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

© www.soinside.com 2019 - 2024. All rights reserved.