* 防抖 节流
* 概念:
* 函数防抖(debounce):触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。
* 函数节流(throttle):高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率。
* 作用:
* 优化性能,减少内存消耗。对于高频触发事件做防抖和节流处理时非常重要的
window.addEventListener('scroll', handle()) function handle() { // 复杂计算 // .... console.log('运行结果') }
等于只要不断滚动 handle()方法就不断执行 及其消耗性能
添加防抖处理:
function handle() { let timer = null return function () { clearTimeout(timer) timer = setTimeout(() => { // 复杂计算 // .... console.log('运行结果') }, 3000) } }
添加节流处理:
function handle() { let isCanDo = true return function () { if (!isCanDo) return isCanDo = false timer = setTimeout(() => { // 复杂计算 // .... console.log('运行结果') isCanDo3 = true }, 3000) } }
总结:
防抖:如果规定时间内被多次触发,则前面的执行会被取消,只会保留最后一次执行
节流:如果规定时间内被多次触发,只能待前一次执行完了,才能被继续触发,否则不会执行。
没有上一条信息
推荐文章