美文网首页
绝妙的函数:重复触发防抖

绝妙的函数:重复触发防抖

作者: 喜欢唱歌的小狮子Shio | 来源:发表于2019-01-23 10:34 被阅读0次

Awesome Function: debounce

在线演示

利用闭包保存定时器的debounce函数

// 利用闭包保存定时器的debounce函数
const debounce1 = function () {
    let timer = null
    return function (fn, wait, scope) {
        clearTimeout(timer)
        timer = setTimeout(function () {
            fn.call(scope)
        }, wait)
    }
}()

// 按钮触发事件
debounce1(() => {
    paras[index - 1].innerHTML += ' 执行的内容'
}, 1000)

利用函数属性保存定时器的debounce函数

// 利用函数属性保存定时器的debounce函数
const debounce2 = function (fn, wait, scope) {
    clearTimeout(debounce2.timer)
    debounce2.timer = setTimeout(function(){
        fn.call(scope)
    }, wait)
}

// 按钮触发事件
debounce2(function () {
    paras[index - 1].innerHTML += ' 执行的内容'
}, 1000)

可配置是否立即执行的debounce函数

// 可配置是否立即执行的debounce函数
const debounce3 = function () {
    let timer = null
    return function (fn, wait, scope, immediate) {
        timer && clearTimeout(timer)
        if (immediate) {
            !timer && fn.call(scope)
            timer = setTimeout(() => {
                timer = null
                count = 0
            }, wait)
        } else {
            timer = setTimeout(function () {
                fn.call(scope)
                timer = null
            }, wait)
        }
    }
}()

// 按钮触发事件,立即执行的内容
debounce3(function () {
    paras[index - 1].innerHTML += ' 立即执行的内容'
}, 1000, null, true)

// 按钮触发事件,延迟执行的内容
debounce3(function () {
    paras[index - 1].innerHTML += ' 延迟执行的内容'
}, 1000)

相关文章

  • 绝妙的函数:重复触发防抖

    Awesome Function: debounce 在线演示 利用闭包保存定时器的debounce函数 利用函数...

  • 微信小程序函数防抖和节流

    函数防抖: 英文 debounce 有防反跳的意思,大致就是指防止重复触发。 那么,函数防抖,真正的含义是:延迟函...

  • 面试过程中遇到的问题记录

    1.js的防抖和节流 函数防抖 函数防抖原理(debounce):当持续触发事件时,一定时间段内没有再触发事件,事...

  • JS函数防抖

    JS 中的函数防抖 一、什么是函数防抖? 概念: 函数防抖(debounce), 就是指触发事件后,在 n 秒内函...

  • 防抖与节流

    1. 防抖函数 1.1 防抖定义: 函数防抖(debounce):当持续触发事件时(例如mousemove),一定...

  • JavaScript的防抖与节流

    函数防抖 函数防抖(debounce):你尽管触发事件,但是我一定在事件触发 n 秒后才执行,如果你在一个事件触发...

  • 函数的节流和防抖

    防抖(debounce) 函数的防抖)指的是, 在持续触发事件时, 当一定时间内没有在触发, 事件处理函数才会执行...

  • JS中的函数防抖及实现

    1.什么是函数防抖 概念:函数防抖(debounce)是指触发事件后,在 n 秒内函数只能执行一次,如果触发事件后...

  • vue的防抖和节流

    函数防抖 防抖分两种: (都是频繁触发事件)一是立即执行:第一次触发时执行函数,后面触发不会执行,停止触发,间隔一...

  • 前端优化--函数防抖和节流

    一、函数防抖和函数节流 函数防抖(debounce)在短时间内多次触发某事件,事件处理函数只在最后一次触发时执行。...

网友评论

      本文标题:绝妙的函数:重复触发防抖

      本文链接:https://www.haomeiwen.com/subject/vicjjqtx.html