//节流 /** * 某段时间内,无论触发多少次回调,只会响应第一次回调 * **/ function throttle(time, cb) { //上次操作触发回调的时间 let last = 0; //事件防抖闭包返回 return (params) => { let now = new Date().getTime() if (now - last >= time) { cb(params) //更新上次的操作时间 last = new Date().getTime() } } } //防抖 /** * 某段时间内,无论触发多少次,只响应最后一次回调 * * **/ function debounce(time, cb) { //设置定时器 let timer = null return (params) => { //每当事件触发的时候,清理其定时器 if (timer) clearTimeout(timer) //设定新的定时器 timer = setTimeout(() => cb(params), time) } }