如何使节流函数可重用?
创建了一个节流函数,希望在应用程序的不同位置重用。油门功能应该imported
进入不同的文件位置!
Bellow,您可以找到一个工作版本,其中成功使用了节流功能(用户可以单击 cta 并稍后触发回调)。
标记,
<button id="cta1">cta 1</button>
<button id="cta2">cta 2</button>
脚本示例,
function throttle (fn, delay) {
let timer = null
return (args) => {
clearTimeout(timer)
timer = setTimeout(() => {
fn(args)
}, delay)
}
}
const foobar1 = throttle(({p1, p2}) => {
alert(`${p1} ${p2}`)
}, 800)
const foobar2 = throttle(({p1, p2}) => {
alert(`${p1} ${p2}`)
}, 800)
const btn1 = document.querySelector('#cta1')
const btn2 = document.querySelector('#cta2')
btn1.addEventListener('click', () => {
foobar1({
p1: 'hello',
p2: 'world'
})
})
btn2.addEventListener('click', () => {
foobar2({
p1: 'yo',
p2: 'cool!'
})
})
同时,如果我们声明一个受限制的函数并尝试在多个地方导入它,它将仅适用于单个案例,但不能同时工作。
为了,
export const throttled = throttle(foobar, delay)
我想常见的答案是创建一个新实例,将其导入到,如下例所示,它可以正常工作:
export const Throttled = function (args) {
return throttle(foobar, delay)
}
const throttled = Throttled()
但是,还有哪些其他选择?