RxJS Observables: новый запрос в зависимости от предыдущего результата - PullRequest
0 голосов
/ 25 января 2019

Как я могу генерировать новые значения для наблюдаемого или субъекта в зависимости от полученных значений?

Пример:

Допустим, у меня есть наблюдаемое, которое испускаетодно случайное число благодаря веб-API.

Если это четное число, я хочу, чтобы Observable испустил другое случайное число, используя первое в качестве начального числа ... и так далеепока я не получу нечетное значение.

Обратите внимание, что я заранее не знаю, сколько запросов я собираюсь сделать.

До сих пор мне удавалось делать это с«странные», рекурсивные методы, но я чувствую, что должен быть очень правильный способ сделать это.

1 Ответ

0 голосов
/ 25 января 2019

Похоже, вы можете использовать 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

...