js-debounce
v0.3.1
Published
Javascript setTimeout and setInterval replacement, with advanced options and debounce ability.
Downloads
214
Maintainers
Readme
Debounce
Javascript setTimeout and setInterval replacement, with advanced options and debounce ability.
Usage
debounce( id, delay, callback )
This will call the function callback
after delay
milliseconds.
debounce( id, true )
This will call the function assigned to id
instantly and cancel the assigned timeout.
debounce( id )
This will cancel the callback assigned with id
and won't call it.
The callback function will be called with one argument, that's the number of times the current timeout has been run. It will always be 0 unless you return true
from your callback, then it will increase.
Return values
Inside a callback function, you can return any of these values to reassign the callback to the same or a different delay.
- True(ish) reschedule the same callback after the same delay again.
- number reschedule the same callback after new returned delay.
- false(ish) don't reschedule anything.
You can also override the timeout with the same id
inside the callback, and if you do so the return value will be ignored.
Examples
Scroll events
$(document).on('scroll', function() {
debounce( `scroll-event`, 500, scrollEvent );
});
function scrollEvent() {
// This will only be excuted if the user scrolls and then stops for 500ms.
}
Timeout functions
debounce( `ajax-timeout`, 30000, function() {
ajax.abort();
});
ajax.done(function() {
// Cancel the callback
debounce( `check-loaded` );
});