防抖
//防抖指令期待參數為 [fn, event, time]
Vue.directive('debounce', {
inserted: function(el, binding) {
let [fn, event = "click", time = 300] = binding.value
let timer
el.addEventListener(event, () => {
timer && clearTimeout(timer)
timer = setTimeout(() => fn(), time)
})
}
})
//節流指令期待參數為 [fn, event, time]
Vue.directive('throttle', {
inserted: function(el, binding) {
let [fn, event = "click", time = 1500] = binding.value
let timer, timer_end;
el.addEventListener(event, () => {
if (timer) {
clearTimeout(timer_end);
return timer_end = setTimeout(() => fn(), time);
}
fn();
timer = setTimeout(() => timer = null, time)
})
}
})