@fibercom/routeros-api
Version:
Robust MikroTik RouterOS API client for Node.js and TypeScript
31 lines • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.debounce = void 0;
/**
* Creates a debounced function wrapper that delays the execution
* of the callback until after a specified timeout has elapsed
* since the last invocation.
*
* This is useful in RouterOS streaming cases where frequent updates
* could be throttled to avoid unnecessary processing.
*
* @param callback - The function to debounce
* @param timeout - Delay in milliseconds (default: 0)
* @returns An object with `.run()` to invoke the debounced function and `.cancel()` to clear the timer
*/
const debounce = (callback, timeout = 0) => {
let timeoutObj = null;
return {
run: (...args) => {
clearTimeout(timeoutObj);
timeoutObj = setTimeout(() => {
callback(...args);
}, timeout);
},
cancel: () => {
clearTimeout(timeoutObj);
},
};
};
exports.debounce = debounce;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSSxNQUFNLFFBQVEsR0FBRyxDQUN0QixRQUFrQyxFQUNsQyxPQUFPLEdBQUcsQ0FBQyxFQUM0QyxFQUFFO0lBQ3pELElBQUksVUFBVSxHQUF5QyxJQUFJLENBQUM7SUFFNUQsT0FBTztRQUNMLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUU7WUFDdEIsWUFBWSxDQUFDLFVBQVcsQ0FBQyxDQUFDO1lBQzFCLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUMzQixRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNwQixDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUNYLFlBQVksQ0FBQyxVQUFXLENBQUMsQ0FBQztRQUM1QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQWxCVyxRQUFBLFFBQVEsWUFrQm5CIn0=