У меня есть служба, которая делает некоторый http-вызов API для отдыха. На моем компоненте у меня есть подписка на него. Как я могу обновить данные о подписке, не делая новый вызов сервиса?
Как я могу обновить данные подписки?
Ответы (1)
Вопрос не совсем ясен, но я думаю, что могу сделать достаточно выводов, чтобы, надеюсь, дать ответ.
Предположим, у вас есть наблюдаемый объект User
со свойством OrganizationId
, и вы хотите, чтобы наблюдаемый объект Organization
был связан с этим OrganizationId
. Вы хотите, чтобы он обновлялся, когда пользователь обновляется, верно?
Это то, для чего вы хотели бы использовать оператор flatMap
. Предположим, что у нашего organizationService
есть метод byId$
, который принимает OrganizationId
и возвращает наблюдаемое из метода http.post()
.
organization$ = user$
.flatMap(user => organizationService.byId$(user.OrganizationId));
Вы можете думать о flatMap
как о map
в том смысле, что он будет принимать одно значение и превращать его в другое на основе обратного вызова, который вы ему передаете. Разница в том, что если бы вы использовали обычный map
таким образом, вы бы получили наблюдаемое из наблюдаемого. flatMap
развернет наблюдаемое, которое возвращается к нему, так что у вас будет просто наблюдаемое для желаемого объекта.