朝花夕拾-工作小记

Posted chyshy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了朝花夕拾-工作小记相关的知识,希望对你有一定的参考价值。

谈谈js防抖和节流

常见的防抖节流应用场景:监听滚动条(onscroll)、输入框的验证(validate)、echarts自适应处理(onresize)
如果事件处理没有频率限制,就会加重浏览器的负担,影响用户的体验感,因此,我们可以采取防抖(debounce)和节流(throttle)来处理,减少调用事件的频率,达到较好的用户体验

防抖

当事件被触发时,设定一个定时器,若期间又被触发,则重新设定周期,直到周期结束
`
//需求:监听浏览器滚动事件,返回当前滚条与顶部的距离
需求实现(未处理版)
function watchScroll() {
let scrollTop = document.body.scrollTop || document.documentElement.scrollTop
console.log(scrollTop)
}
window.onscroll = watchScroll
//如果不做处理,在拖动滚动条时这个函数触发的频率会很高,为了不浪费浏览器性能,这里可以用上防抖函数
/**

  • @param fn:需要防抖处理的函数,delay:防抖设置的间隔
  • @return function
    */
    function debounce(fn, delay) {
    let timer = null //这里用到了闭包,每次onscroll触发都会调用下一行返回的匿名函数,所以timer=null只会执行一次,并且timer会一直保留到闭包函数销毁为止
    return function () {
    if (timer) {
    clearTimeout(timer)
    timer = setTimeout(fn, delay)
    } else {
    timer = setTimeout(fn, delay)
    }
    }
    }

需求实现(debounce处理版)
function showTop () {
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
  console.log(‘滚动条位置:‘ + scrollTop);
}
window.onscroll = debounce(showTop,1000)
`

节流

当事件被触发时,在一定时间内只有第一次触发有效,若期间又被触发则无效,直到周期结束






























以上是关于朝花夕拾-工作小记的主要内容,如果未能解决你的问题,请参考以下文章

朝花夕拾之Struts2工作流程

朝花夕拾内存拾遗

朝花夕拾 - 噫吁嚱,编程人,科技魂(jsliang 陪你瞎叨叨)

朝花夕拾Android性能优化篇之序言及JVM篇

朝花夕拾Broadcast篇

朝花夕拾Android Log篇