rxjs - 可观察性以及如何控制结果速度
问题描述
我正在寻找一个可以帮助我调整从 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
推荐阅读
- matlab - matlab无法导出图形
- javascript - 使用 cordova-file-plugin 存储的文件在哪里
- react-native - 循环博览会生物特征认证直到成功
- sql - 如何构造特定的正则表达式
- c - C程序不读取键盘输入
- r - 导致此特定错误消息的语法错误是什么?
- apache-kafka - 如果在 Apache Flink 中操作时发生异常,则不提交来自 Apache Kafka 的消息
- javascript - 如何使用WEB API Dot net core实现文件上传?
- javascript - 如何使用jQuery从字符串中获取特定值
- python - 在 groupby 聚合函数中有条件地连接字符串