天天看點

Delay (Cheatsheet)

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);
	};
}
      

繼續閱讀