Наблюдаемые и как контролировать результаты темпами - PullRequest
0 голосов
/ 28 августа 2018

Я ищу оператора, который помог бы мне оценить результаты, полученные от наблюдаемой, это выглядело бы так:

[--A-BC--D-E----------------]
[--A----B----C----D----E----]

Я пробовал AuditTime (), но он не воспроизводит результаты, полученные между интервалами, он делает что-то вроде этого:

[--A-BC--D-E----------------]
[--A----C----E--------------]

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 29 августа 2018

Я думаю, что это должно делать то, что вам нужно:

const e1 =  cold('--A-BC--D-E----------------|');
const expected = '--A----B----C----D----E----|';

const source = e1.pipe(
  concatMap(val => of(false).pipe(
    delay(5, scheduler),
    takeWhile(Boolean),
    startWith(val),
  )),
);

expectObservable(source).toBe(expected);

Хитрость в том, что я использую concatMap, чтобы всегда ждать, пока завершится предыдущая Наблюдаемая. Внутренняя наблюдаемая излучает значение, а затем откладывает свое собственное завершение, и, таким образом, concatMap обеспечивает задержку между двумя выбросами.

Посмотреть демо: https://stackblitz.com/edit/rxjs6-test-scheduler?file=index.ts

...