function Delay() {
var timer = 0;
return function(callback, ms, args, _this){
clearTimeout(timer);
timer = setTimeout(function() {
callback.apply(_this || this, args || []); // IE doesn't allow undefined args.
}, ms);
};
}
var delay = Delay();
對于鍵盤等的事件處理很有幫助。在需要延遲處理的場合, 通常連續的事件都是同一個元素觸發的, 提前綁定this是以顯得有意義。但如果不同的觸發元素(即不同的this)需要共享同一個timer, 那麼隻能将this參數下移到傳回的function裡去作為參數了。
function Delay() {
var timer = 0;
return function(callback, ms, args, _this){
clearTimeout(timer);
timer = setTimeout(function() {
callback.apply(_this || this, args || []); // IE doesn't allow undefined args.
}, ms);
};
}