18 lines
448 B
JavaScript
18 lines
448 B
JavaScript
"use strict";
|
|
let timeout = null;
|
|
function debounce(func, wait = 500, immediate = false) {
|
|
if (timeout !== null) clearTimeout(timeout);
|
|
if (immediate) {
|
|
const callNow = !timeout;
|
|
timeout = setTimeout(() => {
|
|
timeout = null;
|
|
}, wait);
|
|
if (callNow) typeof func === "function" && func();
|
|
} else {
|
|
timeout = setTimeout(() => {
|
|
typeof func === "function" && func();
|
|
}, wait);
|
|
}
|
|
}
|
|
exports.debounce = debounce;
|