我正在寻找一个可以帮助我调整从 observable 发出的结果的运算符,它看起来像这样:
[--A-BC--D-E----------------]
[--A----B----C----D----E----]
我尝试了 AuditTime() 但它不会重播间隔之间发出的结果,它会执行以下操作:
[--A-BC--D-E----------------]
[--A----C----E--------------]
谢谢你的帮助。
我正在寻找一个可以帮助我调整从 observable 发出的结果的运算符,它看起来像这样:
[--A-BC--D-E----------------]
[--A----B----C----D----E----]
我尝试了 AuditTime() 但它不会重播间隔之间发出的结果,它会执行以下操作:
[--A-BC--D-E----------------]
[--A----C----E--------------]
谢谢你的帮助。
我认为这应该做你需要的:
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