12345678910111213141516171819202122232425262728293031323334 |
- 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
- }
- }
- }
|