Я собираюсь сформулировать вопрос в rxjs, но я полагаю, что он похож на любую Rx или наблюдаемую библиотеку.
Скажем, у меня есть наблюдаемое пользователей и функция getAssociates(user)
, которая возвращает другую наблюдаемуюпользователей.Я хочу использовать функцию getAssociates
для каждого пользователя в наблюдаемой и вернуть наблюдаемую из этих партнеров.flatMap
достаточно для этого.
Но я также хочу запускать getAssociates
для каждого возвращаемого сотрудника, но никогда не запускать его дважды для любого конкретного пользователя (поскольку два пользователя могут совместно использовать сотрудника, иесли A имеет B в качестве ассоциированного, то B также имеет A в качестве ассоциированного).
Что-то вроде оператора expand
- это то, что я ищу:
seedUsers.pipe(
expand(user => getAssociates(user)),
);
но как я могу рассказать о том, что не нужно дважды запускаться на каком-либо конкретном пользователе?Я мог бы вести список увиденных пользователей, но хотел бы добиться его в функциональном стиле.