function debounce (fn, delay) {
var timer = null
return function () {
var context = this, args = arguments
clearTimeout(timer)
timer = setTimeout(function () {
fn.apply(context, args)
}, delay)
}
}
`</pre>
Example:
<pre>`Elm.addEventListener('click', debounce(function(event){
...
}, 250))
可以看出, 传入 debounce 的所有函数共享计时器 timer, 因此如果在 delay 时间内再次调用 debounce(fn), 即上一次 fn 为执行而新的 fn 传入时, 上一次的 fn 的 timer 会清空, 对新传入的 fn 进行计时
其结果即是,
在 delay 时限内复数次调用 debounce 会刷新计时器