我正在寻找可以帮助我调整可观察对象发出的结果的运算符,它看起来像这样:
[--A-BC--D-E----------------]
[--A----B----C----D----E----]
我尝试了AuditTime(),但是它不会重播间隔之间发出的结果,它会执行以下操作:
[--A-BC--D-E----------------]
[--A----C----E--------------]
感谢您的帮助。
答案 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