RxJS Observables:根据先前结果的新请求

时间:2019-01-25 10:38:00

标签: rxjs observable

如何根据接收到的值为可观察对象或主题生成新值?

示例:

比方说,由于Web API,我有一个Observable发出一个随机数。

如果它是一个偶数,我希望Observable使用第一个随机数作为种子发出另一个随机数...依此类推,直到得到一个奇数。

请注意,我事先不知道我要提出多少个请求。

直到现在,我还是使用“怪异”的递归方法来做到这一点,但是我觉得必须有一种非常合适的方法来做到这一点。

1 个答案:

答案 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)

实时演示:https://stackblitz.com/edit/rxjs-czomtm

相关问题