Как я могу обновить данные подписки?

У меня есть служба, которая делает некоторый http-вызов API для отдыха. На моем компоненте у меня есть подписка на него. Как я могу обновить данные о подписке, не делая новый вызов сервиса?


person Ennio    schedule 09.06.2017    source источник
comment
какое значение вы хотите обновить? обычно внутри подписки вы назначаете данные подписки локальной переменной компонента. вы можете напрямую обновить свое локальное значение. опубликовать код ?.   -  person CharanRoot    schedule 09.06.2017


Ответы (1)


Вопрос не совсем ясен, но я думаю, что могу сделать достаточно выводов, чтобы, надеюсь, дать ответ.

Предположим, у вас есть наблюдаемый объект User со свойством OrganizationId, и вы хотите, чтобы наблюдаемый объект Organization был связан с этим OrganizationId. Вы хотите, чтобы он обновлялся, когда пользователь обновляется, верно?

Это то, для чего вы хотели бы использовать оператор flatMap. Предположим, что у нашего organizationService есть метод byId$, который принимает OrganizationId и возвращает наблюдаемое из метода http.post().

organization$ = user$
    .flatMap(user => organizationService.byId$(user.OrganizationId));

Вы можете думать о flatMap как о map в том смысле, что он будет принимать одно значение и превращать его в другое на основе обратного вызова, который вы ему передаете. Разница в том, что если бы вы использовали обычный map таким образом, вы бы получили наблюдаемое из наблюдаемого. flatMap развернет наблюдаемое, которое возвращается к нему, так что у вас будет просто наблюдаемое для желаемого объекта.

person Kevin Kipp    schedule 09.06.2017