2013-03-11 37 views
0

我曾經找過一個圖書館,那是一個XAML/.NET解決方案的副本,用於多次激發的事件,我希望你們都能幫助我找到它。JavaScript庫調整大小/按鍵事件一次?

問題是,當您捕獲窗口大小調整事件時,它會觸發寬度或高度的每個像素更改。關鍵新聞事件也是如此;我只想在用戶實際完成輸入一段時間後開啓自動完成搜索事件。

因此,而不是:

$(window).keypress(function() { makeAjaxAutocompleteCall() }); 

我知道庫支持這樣的事情:

$(window).collect("keypress", 250, function() { makeAjaxAutocompleteCall(); }); 

凡圖書館藏書按鍵事件,而每250毫秒只觸發一次。

+0

認爲這可能是重複的,看來這已被回答http://stackoverflow.com/questions/9613594/scroll-event-firing-too-many-times-i-only-want-它對火的最大限度說的 – 2013-03-11 20:29:22

+0

它也很容易編寫自己的(雖然我也推薦Underscore):http://stackoverflow.com/questions/5041548/preventing-a-callback-從執行的-直到輸入-停止/ 5044395#5044395 – 2013-03-11 20:44:55

回答

0

我發現了一個很徹底的博客文章,解釋防抖動和油門

http://drupalmotion.com/article/debounce-and-throttle-visual-explanation

這兩種技術都回答同樣的問題:「如何往往有一定的功能可以被稱爲隨着時間的推移?」以不同的方式:

去抖:將其視爲「將多個事件合併爲一個」。想象一下,你回家後,進入電梯,門正在關閉......突然你的鄰居出現在大廳裏,並試圖跳上電梯。要有禮貌!併爲他打開大門:你正在打電梯離開。考慮到第三個人可能會再次發生同樣的情況,等等......可能會在幾分鐘後推遲離開。

節流閥:將其視爲閥門,它調節執行流量。我們可以確定在某個時間內函數可以被調用的最大次數。因此,在電梯的比喻中,你有禮貌地讓人們進入10秒,但一旦延遲過去,你必須走了!