r3-v2/node_modules/just-debounce/index.js

35 lines
605 B
JavaScript

module.exports = debounce
function debounce (fn, delay, at_start, guarantee) {
var timeout
var args
var self
return function debounced () {
self = this
args = Array.prototype.slice.call(arguments)
if (timeout && (at_start || guarantee)) {
return
} else if (!at_start) {
clear()
timeout = setTimeout(run, delay)
return timeout
}
timeout = setTimeout(clear, delay)
fn.apply(self, args)
function run () {
clear()
fn.apply(self, args)
}
function clear () {
clearTimeout(timeout)
timeout = null
}
}
}