我花了几天时间,但找不到在 RxJS 中进行“独特节流”的方法。
\n\n假设每个事件在 4 个破折号内完成,“不同的节流阀”将执行如下:
\n\n-\xe2\x91\xa0-\xe2\x91\xa1-\xe2\x91\xa0---------\xe2\x91\xa0-----|->
\n\n[独特的油门]
\n\n-\xe2\x91\xa0-\xe2\x91\xa1-------------\xe2\x91\xa0-----|->
\n\n如何使用现有的 RxJS 运算符来构建“独特的节流阀”?
\n您可以使用groupBy按值分隔通知,然后应用throttleTime并使用 合并分组的可观察量mergeMap。像这样:
const { Subject } = rxjs;
const { groupBy, mergeMap, throttleTime } = rxjs.operators;
const source = new Subject();
const result = source.pipe(
groupBy(value => value),
mergeMap(grouped => grouped.pipe(
throttleTime(400)
))
);
result.subscribe(value => console.log(value));
setTimeout(() => source.next(1), 100);
setTimeout(() => source.next(2), 300);
setTimeout(() => source.next(1), 400);
setTimeout(() => source.next(1), 900);Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/rxjs@6/bundles/rxjs.umd.min.js"></script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
835 次 |
| 最近记录: |