70 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
 | 
						|
# debounce
 | 
						|
 | 
						|
  Useful for implementing behavior that should only happen after a repeated
 | 
						|
  action has completed.
 | 
						|
 | 
						|
## Installation
 | 
						|
 | 
						|
    $ component install component/debounce
 | 
						|
 | 
						|
  Or in node:
 | 
						|
 | 
						|
    $ npm install debounce
 | 
						|
 | 
						|
## Example
 | 
						|
 | 
						|
```js
 | 
						|
var debounce = require('debounce');
 | 
						|
window.onresize = debounce(resize, 200);
 | 
						|
 | 
						|
function resize(e) {
 | 
						|
  console.log('height', window.innerHeight);
 | 
						|
  console.log('width', window.innerWidth);
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
To later clear the timer and cancel currently scheduled executions:
 | 
						|
```
 | 
						|
window.onresize.clear();
 | 
						|
```
 | 
						|
 | 
						|
To execute any pending invocations and reset the timer:
 | 
						|
```
 | 
						|
window.onresize.flush();
 | 
						|
```
 | 
						|
 | 
						|
Alternately, if using newer syntax:
 | 
						|
 | 
						|
```js
 | 
						|
import { debounce } from "debounce";
 | 
						|
```
 | 
						|
 | 
						|
## API
 | 
						|
 | 
						|
### debounce(fn, wait, [ immediate || false ])
 | 
						|
 | 
						|
  Creates and returns a new debounced version of the passed function that
 | 
						|
  will postpone its execution until after wait milliseconds have elapsed
 | 
						|
  since the last time it was invoked.
 | 
						|
 | 
						|
  Pass `true` for the `immediate` parameter to cause debounce to trigger
 | 
						|
  the function on the leading edge instead of the trailing edge of the wait
 | 
						|
  interval. Useful in circumstances like preventing accidental double-clicks
 | 
						|
  on a "submit" button from firing a second time.
 | 
						|
 | 
						|
  The debounced function returned has a property 'clear' that is a 
 | 
						|
  function that will clear any scheduled future executions of your function.
 | 
						|
 | 
						|
  The debounced function returned has a property 'flush' that is a 
 | 
						|
  function that will immediately execute the function if and only if execution is scheduled,
 | 
						|
  and reset the execution timer for subsequent invocations of the debounced
 | 
						|
  function.
 | 
						|
 | 
						|
## License
 | 
						|
 | 
						|
  MIT
 | 
						|
 | 
						|
  Original implementation is from [`underscore.js`](http://underscorejs.org/)
 | 
						|
  which also has an MIT license.
 |