今天早上我读了一大堆关于Rx限制的文章,我对限制有点困惑。在本文中,它说"限制强制实施一段时间内可以调用函数的最大次数(如每 100 毫秒最多执行一次此函数("但是,阅读本文,它说"限制在 Rx 中实现去抖动"。
我的问题是限制的真正定义是什么(使用它们的代码示例会有很大帮助(?
限制设置了事件数的上限。如果将上限设置为 10 并接收 2 个事件(远低于上限(,则会尽快处理这两个事件。
去抖动强制事件之间的延迟。 如果将延迟设置为 1/10 秒,并且收到 2 个事件,则它们之间将有 1/10 秒的延迟。无论收到多少事件,延迟都是相同的。
如果事件处理速度非常快,则在交通繁忙的情况下,设置为 10 的油门和设置为 1/10 的去抖动将或多或少具有相同的效果。如果事件处理时间过长,则去抖动会降低带宽,因为它会增加额外的延迟。在低负载下,限制效率更高,因为不会添加延迟。限制具有在高流量级别进行去抖动的所有好处。
换句话说,限制更恰当地解决了这个问题,但去抖动更容易实现。作者指出,Throttle()
方法实际上是去抖动的。因此,换句话说,编写该代码的人"作弊"。