适当的可观察管理

Proper Observable Management

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

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

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;
};

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

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

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