Правильное наблюдаемое управление - PullRequest
0 голосов
/ 27 февраля 2019

Я работаю над приложением 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;
};

1 Ответ

0 голосов
/ 28 февраля 2019

Итак, вы определенно создаете новую наблюдаемую информацию каждый раз и не используете один и тот же поток.С другой стороны, в этом случае это не проблема.Если заметка завершается, она автоматически отписывается от всех подписок.

fromPromise - это наблюдаемый механизм создания, который испускает только одно значение, которое завершает себя.Таким образом, нет необходимости отписываться.

Вы можете доказать это с помощью метода subscribe ().У этого есть 3 arugments, сначала успех, затем неудача, и затем полный.Таким образом, вы можете сделать .subscribe (null, null, () => console.log ("Complete")).Если вы видите полный пожар, вы знаете, что вам не нужно беспокоиться об утечках!

...