今天早上,我读了很多关于Rx节流的文章,我对节流感到有些困惑。在this article中,它说:“限制随着时间的推移会强制调用一个函数的最大次数(在此过程中,每100毫秒最多执行一次此函数)”,但是,读到this article时,它说:“节流可在Rx中实现去抖动。”
我的问题是节流的真正定义是什么(使用它们的代码示例会很有帮助)?
答案 0 :(得分:3)
限制设置事件数量的上限。如果您将最高限额设置为10,并且收到2个事件(远远低于最高限额),则将尽快处理这两个事件。
去抖会在事件之间强制延迟。如果将延迟设置为1/10秒,并且收到2个事件,则它们之间将有1/10秒的延迟。无论收到多少事件,延迟都是相同的。
如果事件的处理速度非常快,那么在交通拥挤的情况下,将油门设置为10,将防抖设置为1/10,将会或多或少具有相同的效果。如果事件处理时间太长,则反跳会降低带宽,因为这会增加额外的延迟。在低负载下,节流更为有效,因为不会增加延迟。节流具有在高流量水平下反跳的所有好处。
换句话说,节流可以更适当地解决该问题,但是去抖动更容易实现。作者指出Throttle()
方法实际上会反跳。因此,就是说那个代码被“欺骗”的人。