我有一个 observable,它发出一个包含一些参数的对象。在对象中,其中一个参数(称为optionId)明确标识了一个选项。我想消除该发射的所有实例。但是,如果出现新的optionId,我想开始一个新的时钟,并开始一个新的去抖动。
这是我正在寻找的示例大理石图:
-----1----1-----1----3----3----3----3-----1---3---1---3---1------>
(magic operators for which I'm unclear)
-------------------1-------------------3-----1---3---1---3---1--->
Run Code Online (Sandbox Code Playgroud)
我有去抖动,我喜欢,但它这样做:
-----1----1-----1----3----3----3----3-----1---3---1---3---1------>
debounce
-------------------1-------------------3--------------------1---->
Run Code Online (Sandbox Code Playgroud)
它会在最后跳过所有那些中间 3 秒……这有意义吗?
我想你正在寻找这个:
source$.pipe(
groupBy(item => item.optionId),
map(group => group.pipe(
debounceTime(1000),
)),
mergeAll(),
).subscribe(console.log);
Run Code Online (Sandbox Code Playgroud)
它的作用是将源分组为基于 的更高阶可观察量optionId,这为您提供每个组的可观察量。然后每个组分别映射到一个去抖动版本,最后我们将它们全部合并在一起。
这map是我们真正想要使用返回 observable 的罕见情况之一。:-)
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |