16 lines
620 B
JavaScript
16 lines
620 B
JavaScript
// Debounce is a higher order function which makes its enclosed function be executed
|
|
// only if the function wasn't called again till 'delay' time has passed, this helps reduce impact of heavy working
|
|
// functions which might be called frequently
|
|
// NOTE : Don't use lambda functions as this doesn't get bound properly in them, use the 'function (args) {}' format
|
|
const debounce = (func, delay) => {
|
|
let inDebounce
|
|
return function () {
|
|
const context = this
|
|
const args = arguments
|
|
clearTimeout(inDebounce)
|
|
inDebounce = setTimeout(() => func.apply(context, args), delay)
|
|
}
|
|
}
|
|
|
|
export default debounce
|