當你在一個時間已經停止發生而你想執行一個動作時,第一個函式會特別有用。例如,一個markdown預覽工具可能想在使用者停止輸入後要等一秒,才能真正的把文字解析到markdown。debounce能夠接受一個函式並且返回一個新函式,這個新函式會根據Underscore文件中記錄的從上次呼叫這個函式起到目前為止所耗費的時間,並將延遲它在等待毫秒級的時間後才執行。
如果你不想僅僅為了這個函式而包含整個庫,你可以使用這個小技巧,使用用一個debounce的改編版本就好了。
我想談論的第二個函式是throttle,這個函式能接受一個函式作為引數,並在返回一個新函式,這個函式“當被重複呼叫的時候,將實際上在每次毫秒級的等待中至多隻呼叫原函式一次”。這點對於發生的太快的事件真的特別有用,因為使用這個函式我們就能夠限制呼叫它的頻率,比如對調整大小和滾動事件來說就是這樣的。
另外,如果你必須愛那個包含這個函式庫,同樣也有一個throttle的改編版本。
函式使用例項
下面就讓我們來看看在規則的jQuery javascript裡面這些函式被用到的例子:
// Let's make sure we don't computate stuff too often // by calling the event handler at most once every 500ms $(window).resize(throttle(function (e) { /* event handling code in here */ }, 500));
總結
正如大家所見,開始使用這些函式實際上非常容易,通過使用它們你極有可能會體驗到你正在開發的Web應用整體UI響應性的顯著提升。這兩個函式是前端開發者很實用的工具,但是要記住:“當你有一把錘子的時候,一切看起來都像是釘子”,儘管誤用它們是比較難的,但還是要明智的使用它們吧。
來自:PHP100
評論(1)