可观察以及如何控制结果进度

时间:2018-08-28 17:44:34

标签: rxjs observable rxjs-pipeable-operators

我正在寻找可以帮助我调整可观察对象发出的结果的运算符,它看起来像这样:

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

我尝试了AuditTime(),但是它不会重播间隔之间发出的结果,它会执行以下操作:

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我认为这应该可以满足您的需求:

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一直等到上一个Observable完成。内部Observable发出该值,然后推迟其自身的完成,因此concatMap强制两次发出之间的延迟。

观看现场演示:https://stackblitz.com/edit/rxjs6-test-scheduler?file=index.ts