gpt4 book ai didi

system.reactive - 响应式(Reactive)框架/DoubleClick

转载 作者:行者123 更新时间:2023-12-01 16:46:37 25 4
gpt4 key购买 nike

我知道有一种简单的方法可以做到这一点 - 但今晚它打败了我......

我想知道两个事件是否在 300 毫秒内发生,就像双击一样。

在 300 毫秒内单击两次左键鼠标 - 我知道这是构建响应式(Reactive)框架的目的 - 但该死的,如果我能找到一个很好的文档,其中包含所有扩展运算符的简单示例 - Throttle、BufferWithCount、BufferWithTime - 所有这些都没有' 为我做....

最佳答案

TimeInterval方法会给你值之间的时间。

public static IObservable<Unit> DoubleClicks<TSource>(
this IObservable<TSource> source, TimeSpan doubleClickSpeed, IScheduler scheduler)
{
return source
.TimeInterval(scheduler)
.Skip(1)
.Where(interval => interval.Interval <= doubleClickSpeed)
.RemoveTimeInterval();
}

如果您想确保三次点击不会触发值,您可以使用 Repeat在一个热门的 observable 上(我在这里使用了 FastSubject 因为点击将全部出现在一个线程上,因此不需要普通主题的沉重感):
public static IObservable<TSource> DoubleClicks<TSource>(
this IObservable<TSource> source, TimeSpan doubleClickSpeed, IScheduler scheduler)
{
return source.Multicast<TSource, TSource, TSource>(
() => new FastSubject<TSource>(), // events won't be multithreaded
values =>
{
return values
.TimeInterval(scheduler)
.Skip(1)
.Where(interval => interval.Interval <= doubleClickSpeed)
.RemoveTimeInterval()
.Take(1)
.Repeat();
});
}

关于system.reactive - 响应式(Reactive)框架/DoubleClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5228364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com