关于函数节流的问题
来源:7-25 播放器底部播放器适配+mixin的应用
qq_渣弹少年_0
2019-10-15
export function throttle(func, delay) {
let runFunc = true
return function (...args) {
if (!runFunc) return
runFunc = false
setTimeout(() => {
func.apply(this, args)
runFunc = true
}, delay)
}
}
有关函数节流一直有个想问的问题,我理解的它的原理是通过函数头的标志位去判断是否执行定时器中的函数,当runFunc
为false
的时候,不会执行。但是这种写法,不是每次调用函数都被第一句赋值语句给修改为true
了吗,迷惑很久了,求大神解答。
写回答
1回答
-
这是一个闭包,当你执行 fn1 = throttle(fn,delay) ,会执行 let runFunc = true,然后返回一个新函数 fn1,之后再调用 fn1 只会执行内层函数,不会再执行 let runFnc = true。
10
相似问题