/*
* 防抖 当事件持续触发,一定时间内没有触发事件函数处理一次。 比如输入框的ajax请求做模糊查询
* 节流 当时间持续触发,在一秒内只能触发一次。比如滚动条持续向下滚动,加载更多数据
* */
function debounce(fn, wait) {
var timeout = null;
return function() {
if(timeout !== null) clearTimeout(timeout);
timeout = setTimeout(fn, wait);
}
}
function throttle(func, delay) {
var prev = Date.now();
return function() {
var context = this;
var args = arguments;
var now = Date.now();
if (now - prev >= delay) {
func.apply(context, args);
prev = Date.now();
}
}
}
function getData(){
console.log('变动了请求新的数据')
}
function getScroll(){
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
console.log('高度为'+scrollTop);
}
$('#myInp').on('keyup',debounce(getData,1000))
window.addEventListener('scroll',throttle(getScroll,1000))