我想mousewheel
使用 RxJS-DOM 观察事件,以便当第一个事件触发时,我将其转发,然后删除任何和所有值,直到后续值之间的延迟超过先前指定的持续时间。
我想象的操作员可能看起来像:
Rx.DOM.fromEvent(window, 'mousewheel', (e) => e.deltaY)
.timegate(500 /* ms */)
想象以下数据流:
0 - (200 ms) - 1 - (400ms) - 2 - (600ms) - 3
其中发送的值是数字,时间描述了下一个值到达所需的时间。由于 0 是第一个值,它将被发出,然后直到 3 的所有值都将被丢弃,因为后续值之间的各个延迟不大于500ms
.
与节流阀不同,无论是否发出最后接收的值,都会计算值之间的时间延迟。使用节流阀,将发送 0,经过 200 毫秒,评估 1 并失败,经过 400 毫秒,评估 2 并通过,因为上次发出的值 (0) 和当前接收到的值 (2 ) 是 600 毫秒,而对于我的操作员,它将相对于 1 进行评估,并且经过的时间将为 400 毫秒,因此未通过测试。
而且这个算子也没有去抖动。它不是等到间隔过去才发出,而是首先发送第一个值,然后根据所有未来值进行评估,依此类推。
这样的运营商是否已经存在?如果没有,我将如何制作一个?