TimeInterval
방법은 당신에게 값 사이의 시간을 줄 것이다 : 당신은 당신이 받고있어 정확히 알 수 있도록
var ioClicks = Observable.FromEvent<MouseButtonEventHandler, RoutedEventArgs>(
h => new MouseButtonEventHandler(h),
h => btn.MouseLeftButtonDown += h,
h => btn.MouseLeftButtonDown -= h);
var ioTSClicks = ioClicks.Timestamp();
var iodblClicks = ioTSClicks.Zip(ioTSClicks.Skip(1),
(r, l) => l.Timestamp - r.Timestamp)
.Where(tspan => tspan.TotalMilliseconds < 300);
은 아마 최고의 테스트 스케줄러를 통해이 문제를 테스트합니다. 그냥 뜨거운 관찰에
Repeat
를 사용할 수 있습니다 당신은 트리플 클릭 값을 트리거하지 않습니다 있는지 확인하려면
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();
}
, (나는 모든 하나 개의 스레드 따라서에 올 것이다 클릭으로 여기 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();
});
}
대단히 고마워, 나는 매우 쉬운 총독이라고 생각했던 것에서 많은 것을 배웠다. 이 모든 다양한 확장에 대한 완벽한 문서는 어디에 있습니까 ??? 어떻게 그들을 배웠습니까? 관찰자가 범위를 벗어나면 (Unsubscribe가 아니라고) 혼란 스럽기 때문에 나의 유일한 질문은 반복과 관련한 것입니까? 내 수업의 생성자를 구독하는 경우 범위가 어떻게 설정됩니까? OnComplete가 dispose를 호출한다는 것을 알고 있지만 실제로 이벤트를 청취하는 시점은 언제입니까? – codeputer
언제 우편 번호를 사용 하시겠습니까? – codeputer
@codputer - 대부분의 지식은 내가 프레임 워크를 actionscript로 이식하는 동안 각 연산자에 대해 단위 테스트를 작성했다는 사실에서 비롯된 것입니다. 나는 그 이후로 최신 운영체제를 발표했으나 (그리고 나는 Throttle 문서가 잘못되었음을 알고있다.) - https://github.com/richardszalay/rxas/wiki/Operators –