反应式框架/DoubleClick
我知道有一个简单的方法可以做到这一点 - 但今晚它打败了我......
我想知道两个事件是否在 300 毫秒内发生,就像双击一样。
在 300 毫秒内点击鼠标左键两次 - 我知道这就是响应式框架的构建目的 - 但该死的,如果我能找到一个好的文档,其中包含所有扩展运算符的简单示例 - Throttle、BufferWithCount、BufferWithTime - 所有这些都不是' 为我做这件事......
I know that there is an easy way to do this - but it has beaten me tonight ...
I want to know if two events occur within 300 milliseconds of each other, as in a double click.
Two leftdown mouse clicks in 300 milliseconds - I know this is what the reactive framework was built for - but damn if I can find a good doc that has simple examples for all the extenstion operatores - Throttle, BufferWithCount, BufferWithTime - all of which just werent' doing it for me....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
TimeInterval
方法将为您提供值之间的时间。如果您想确保三次点击不会触发值,您可以在热门可观察对象上使用
Repeat
(我在这里使用了FastSubject
,因为点击将全部都在一个线程上,因此不需要正常主题的沉重):The
TimeInterval
method will give you the time between values.If you want to be sure that triple clicks don't trigger values, you could just use
Repeat
on a hot observable (I've used aFastSubject
here as the clicks will all come on one thread and therefore don't require the heaviness of the normal Subjects):编辑 - 使用
TimeInterval()
代替。Zip() 和 Timestamp()
运算符可能是一个好的开始。可能最好通过测试调度程序对此进行测试,这样您就可以准确地知道您将得到什么:
Edit - Use
TimeInterval()
instead.The
Zip() and Timestamp()
operators might be a good start.Probably best to test this via the test scheduler, so you know exactly what you're getting: