防抖截流

截流

只有大于等于执行周期时才执行,周期内调用不执行。

function throttle(handler, wait){
	var lastTime = 0
	return function () {
		var nowTime = new Date().getTime()
		if(nowTime - lastTime > wait) {
			handler.apply(this, arguments)
			lastTime = nowTime
		}
	}
}
  • 窗口调整
  • 页面滚动
  • 抢购疯狂点击

防抖

函数需要频繁触发情况时,只有足够空闲的时间,才执行一次。

function debounce(handler, delay) {
	var timer = null
	return function () {
		var that = this, _arg = arguments
		clearTimeout(timer)
		timer = setTimeout(function (){
			handler.apply(that, _arg)
		}, delay)
	}
}
  • 实时搜索
  • 拖拽

你可能感兴趣的:(javascript)