Add debounce

This commit is contained in:
Angelos Chalaris
2018-01-28 15:18:26 +02:00
parent ca7c242d24
commit 30b9e35651
2 changed files with 30 additions and 0 deletions

29
snippets/debounce.md Normal file
View File

@ -0,0 +1,29 @@
### debounce
Creates a debounced function that delays invoking the provided function until after `wait` milliseconds have elapsed since the last time the debounced function was invoked.
Use `setTimeout()` and `clearTimeout()` to debounce the given method, `fn`.
Use `Function.apply()` to apply the `this` context to the function and provide the necessary `arguments`.
Omit the second argument, `wait`, to set the timeout at a default of 0 ms.
```js
const debounce = (fn, wait = 0) => {
let inDebounce;
return function() {
const context = this,
args = arguments;
clearTimeout(inDebounce);
inDebounce = setTimeout(() => fn.apply(context, args), wait);
};
};
```
```js
window.addEventListener(
'resize',
debounce(function(evt) {
console.log(window.innerWidth);
console.log(window.innerHeight);
}, 250)
); // Will log the window dimensions at most every 250ms
```

View File

@ -33,6 +33,7 @@ createElement:browser,utility
createEventHub:browser,event,advanced
currentURL:browser,url
curry:function,recursion
debounce:function
decapitalize:string,array
deepClone:object,recursion
deepFlatten:array,recursion