如何根据接收到的值为可观察对象或主题生成新值?
示例:
比方说,由于Web API,我有一个Observable发出一个随机数。
如果它是一个偶数,我希望Observable使用第一个随机数作为种子发出另一个随机数...依此类推,直到得到一个奇数。
请注意,我事先不知道我要提出多少个请求。
直到现在,我还是使用“怪异”的递归方法来做到这一点,但是我觉得必须有一种非常合适的方法来做到这一点。
答案 0 :(得分:2)
似乎您可以使用expand()
。
const source$ = /* some API call that returns an Observable */;
source$.pipe(
expand((previous: number) => previous % 2 === 0 ? source$ : EMPTY),
takeLast(1),
).subscribe(console.log);
这仅给您最后一个值(第一个奇数)。如果还要获取所有中间值,只需删除该takeLast(1)
。