Rx DelayOnTrue扩展实现

问题描述 投票:0回答:1

我正在尝试为C#中的bool值实现油门扩展。该实现应直接传递false值,但在传递true时进行限制。

大理石图应为:

每1000毫秒取值

F --- T --- F --- F --- T --- T --- F --- C

ThrottleOnTrue(1001 ms)

F --- F --- F --- F --- F --- T --- F --- C

和我当前的实现是>

public static IObservable<bool> ThrottleOnTrue(this IObservable<bool> source, TimeSpan delay)
    {
        return source.DistinctUntilChanged().Select(value =>  value
                ? Observable.Never<bool>().StartWith(true).Delay(delay)
                : Observable.Never<bool>().StartWith(false))
            .Switch();
    }

但是似乎不起作用。我对Rx非常陌生,因此可能有一种更好的方法来实现此扩展。

我正在尝试为C#中的bool值实现油门扩展。该实现应直接传递false值,但在传递true时进行限制。大理石图应为:值每个...

c# extension-methods system.reactive
1个回答
0
投票

这是一个有趣的问题,我确实想知道这是否可能是XY类问题。无论如何,考虑到您的大理石图,您几乎肯定不需要DistinctUntilChanged(),否则您将永远不会重复“ F”。

© www.soinside.com 2019 - 2024. All rights reserved.