https://github.com/pizzapanther/debounce-house
More advanced debouncing for hairy situations
https://github.com/pizzapanther/debounce-house
Last synced: 3 months ago
JSON representation
More advanced debouncing for hairy situations
- Host: GitHub
- URL: https://github.com/pizzapanther/debounce-house
- Owner: pizzapanther
- License: bsd-3-clause
- Created: 2024-05-17T15:51:31.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-17T18:20:39.000Z (about 1 year ago)
- Last Synced: 2025-03-09T00:05:32.547Z (3 months ago)
- Language: JavaScript
- Size: 6.84 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Debounce House
More advanced debouncing for hairy situations

**Features:**
- Debounce by key
- gives you more flexibility in what to debounce
- Debounce functions
- Debounce promises
- All promises get the last promises result or error## Install
`npm install debounce-house`
## Usage
### Debounce By Key (Function)
```javascript
import { debounce_func } from 'debounce-house';function log_message(id, message){
debounce_func(500, `logging-${id}`, () => {
console.log(`Debouncing: ${id}: ${message}`);
});
}log_message(1, "First Message");
log_message(1, "Next Message");
log_message(1, "Last Message");
log_message(2, "Another Message");// prints after 500ms:
// Debouncing: 1: Last Message
// Debouncing: 2: Another Message
```### Debounce Promises
```javascript
import { debounce_promise } from 'debounce-house';function save_month_data(id, month, data) {
return debounce_promise(3000, `save-sales-${id}-${month}`, () => {
axios.post(`/api/sales/${id}/${month}`, data);
});
}save_month_data(1, '2024-01', data1)
.then((response) => {})
.catch((error) => {});save_month_data(1, '2024-01', data2)
.then((response) => {})
.catch((error) => {});save_month_data(1, '2024-01', data3)
.then((response) => {})
.catch((error) => {});save_month_data(1, '2024-02', data4)
.then((response) => {})
.catch((error) => {});// API Call (1, '2024-01', data3) and (1, '2024-02', data4)
// are called after 3000 ms.
// All (1, '2024-01', *) promises receive the result from
// last call (1, '2024-02', data4).
```## API
### debounce_func(timeout, key, fn)
Debounce function calls based on keys that are similar. Last function that is debounced within the timeout period is called.
#### timeout
Type: Integer
Wait timeout in milliseconds the function will be debounced.#### key
Type: String
Key used to debounce function#### fn
Type: Function
Function to call#### Return
`undefined`
### debounce_promise(timeout, key, fn)
Debounce promises based on keys that are similar. Last promise that is debounced within the timeout period is called. All promises are resolved with the result from that last promise call.
#### timeout
Type: Integer
Wait timeout in milliseconds the function will be debounced.#### key
Type: String
Key used to debounce function#### fn
Type: Function
Function to call. Function should return a Promise.#### Return
`Promise`