这里有一个有趣的例子。我正在使用FRP,并查看各种库(jQuery, Bacon.js)中的"debounce"方法。我开始使用它,发现几乎可以满足我的需要,但有细微的不同。以下是我对debounce与事件处理相关的理解:
当一个事件至少以一定的频率发生时,不要做任何事情。一旦事件减慢到低于频率,就触发事件处理程序。例如(伪代码)对于key-presses.debounce(1 second) then Alert
,我们将看到如果按键在一秒内被按下,我们将不会看到任何事情发生,直到最后一个按键被按下1秒后,我们才会得到一个Alert.
我需要的是在序列开始时触发的东西,而不是在结束之后。对于同样的例子,我们会立即看到Alert,然后什么也没有。如果用户在至少1秒后又开始按键,我们会得到另一个警报,然后什么也没有。
代码很简单-我只是想要一个名称。它仍然需要一个参数的频率:BeginSequence(1000)?AfterExpiry (1000) ?
有什么建议吗?
所以你想要一个事件,当有一个事件后足够长的时间没有事件?
我把这个事件称为打破沉默事件,也许是breakSilence
之类的?我不确定这看起来是否正确,也许是onBreakSilence
,但我不熟悉培根的命名法,所以我不知道onX
是否被使用。
另一个选项可能是listenAfter
。
key-presses.onBreakSilence(1 second) then Alert
key-presses.listenAfter(1 second) then Alert