今天來介紹 Underscore 一個滿實用的功能 , debounce ,
其網站的中文介紹說明如下 :
返回 function 函数的防反跳版本, 将延迟函数的执行(真正的执行)在函数最后一次调用时刻的 wait 毫秒之后. 对于必须在一些输入(多是一些用户操作)停 止到达之后执行的行为有帮助。 例如: 渲染一个Markdown格式的评论预览, 当窗口停止改变大小之后重新计算布局, 等等
這在某些情境下滿有用的 , 例如當我們按下按鈕時會發出 ajax 請求 ,
可是有時後手抖了好幾下卻發出同樣次數的請求 ,
這間接造成資源的浪費 ,
而 debounce 如上面的介紹所說 , 可以降低這種狀況的發生
底下的 Sample 主要是按下按鈕會觸發 ajax 請求 , 當請求成功時並
不會做任何事情 , 這時候你可以觀察連續
按好幾下按鈕時其實它只會產生一次請求
$("#btn").click(_.debounce(test, 1000, true) );
function test(){
$.ajax({type: "GET",
url: "test.aspx"
}).done(function (resp) {
});
}