debounce-house
v1.0.0
Published
more advanced debouncing for hairy situations
Downloads
2
Maintainers
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)
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
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