2013-04-29 60 views
3

這裏有一個有趣的。我正在與FRP合作,並在各種庫(jQuery,Bacon.js)中查看「debounce」方法。我開始與此工作,並發現它幾乎做我所需要的,但有一個微妙的差異。這裏是我對去抖事件的理解,因爲它涉及到事件處理:我需要一個名稱,像'debounce',但不完全一樣

當事件發生時至少有一定的頻率,不要做任何事情。一旦事件減慢到低於頻率,觸發事件處理程序。例如,對於key-presses.debounce(1 second) then Alert(僞代碼),如果按下一秒鐘內的按鍵,直到最後一個按鍵被按下1秒後,我們纔會看到沒有任何事情發生,那麼我們會看到一條警報。

我需要的是在序列開始時觸發,而不是在結束後觸發。因此,對於同一個例子,我們會立即看到Alert,然後什麼也看不到。如果用戶在至少1秒後再次開始按下按鍵,我們會收到另一個提醒,然後再次沒有提示。代碼很簡單 - 我只是想爲它命名。對於頻率,它仍然需要一個參數:BeginSequence(1000)? AfterExpiry(1000)?

有什麼建議嗎?

+1

我稱之爲 「速率限制」 或 「節流」,雖然,也許 「prebounce」(編造的,順便說一句)更嬌媚..也許 「PreventUntil」 連。 – user2246674 2013-04-29 01:17:15

+0

AggregateAndDelayBy()如何?您可以計算在此期間忽略的事件數量,並提供當您觸發該事件時(即使不需要),以更好地描述發生了什麼事情的方式。 – RenniePet 2013-04-29 01:27:22

+0

這絕對不是一個'油門'操作 - 因爲事件會觸發一次,然後永遠不會再次,直到'序列'停止或減速到比頻率更高。 – Beejamin 2013-04-29 01:29:04

回答

0

所以你想要一個事件發生在足夠長時間沒有事件發生後的事件?
我會打電話給那個事件一個沉默打破事件,所以也許像breakSilence?我不確定這看起來是否正確,也許onBreakSilence,但我不熟悉培根的命名,所以我不知道是否使用onX
另一個選項可能是listenAfter

key-presses.onBreakSilence(1 second) then Alert

key-presses.listenAfter(1 second) then Alert

相關問題