防抖与节流

//防抖(debounce):触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。

const debounce = (func, delay = 200) => {

    let timeout = null

    return function () {

        clearTimeout(timeout)

        timeout = setTimeout(() => {

            func.apply(this, arguments)

            }, delay) }

    }

const fetch = (e) => {

    console.log('fetch', e)

}

const debounceSuggest = debounce(fetch, 500)

const btn1 = document.getElementById('btn1')btn1.onclick = function (e) {

    debounceSuggest(e)

}

//节流(throttle):高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率。

const throttle = (func, delay = 200) => {

    let timeout = null

    return function () {

    if (!timeout) {

        timeout = setTimeout(() => {

            func.apply(this, arguments)

            clearTimeout(timeout)

            timeout = null }, delay) }

        }

    }

const throttleSuggest = throttle(fetch, 500)

const btn2 = document.getElementById('btn2')

btn2.onclick = function (e) {

    //触发方法

    console.log("click")

    throttleSuggest(e)

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Ps: 比如搜索框,用户在输入的时候使用change事件去调用搜索,如果用户每一次输入都去搜索的话,那得消耗多大的...
    燕自浩阅读 6,086评论 0 1
  • 在前端开发的过程中,我们经常会需要绑定一些持续触发的事件,如 resize、scroll、mousemove 等等...
    Grace_feb3阅读 444评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 9,093评论 28 54
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,532评论 4 8
  • 怎么对待生活,它也会怎么对你 人都是哭着来到这个美丽的人间。每个人从来到尘寰到升入天堂,整个生命的历程都是一本书,...
    静静在等你阅读 5,444评论 1 6

友情链接更多精彩内容