Compare commits
9 Commits
1.0.0
...
81d208b964
| Author | SHA1 | Date | |
|---|---|---|---|
| 81d208b964 | |||
| 4590d0924f | |||
| cef9bf9b97 | |||
| 4ae317e36d | |||
| e8f1f534be | |||
| 69cb4416f2 | |||
| 68589e968c | |||
| 3fb2da32ce | |||
| ff7280b6cf |
36
damper.min.mjs
Normal file
36
damper.min.mjs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
"use strict";
|
||||||
|
/**
|
||||||
|
* @name Damper
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Execute multiple `function` calls in a `timeout` amount of time just once
|
||||||
|
*
|
||||||
|
* You may also know this technology as a "debouncer" (you are free to use any name)
|
||||||
|
* I prefer "damper", from the word "демпфер"
|
||||||
|
*
|
||||||
|
* @param {function} function Function to execute after damping
|
||||||
|
* @param {number} timeout Timer in milliseconds (ms)
|
||||||
|
* @param {number} force Argument number storing the status of enforcement execution (see @example)
|
||||||
|
*
|
||||||
|
* @return {Promise}
|
||||||
|
*
|
||||||
|
* @example <caption>Forced execution</caption>
|
||||||
|
* const dampered = damper(
|
||||||
|
* (
|
||||||
|
* a, // 0
|
||||||
|
* b, // 1
|
||||||
|
* c, // 2
|
||||||
|
* force = false, // 3
|
||||||
|
* d, // 4
|
||||||
|
* resolve,
|
||||||
|
* reject
|
||||||
|
* ) => {},
|
||||||
|
* 500,
|
||||||
|
* 3, // 3 -> the "force" argument
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* dampered('for a', 'for b', 'for c', true, 'for d'); // Enabled forced execution
|
||||||
|
*
|
||||||
|
* @license http://www.wtfpl.net/ Do What The Fuck You Want To Public License
|
||||||
|
* @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
|
||||||
|
*/export default function damper(e,p=300,t){let s;return(...i)=>new Promise(((r,u)=>{clearTimeout(s),"number"==typeof t&&i[t]?("number"==typeof t&&(i=[...Array.from(i).splice(0,t),...Array.from(i).splice(t + 1)]),i.push(r,u),e.apply(this,i)):("number"==typeof t&&(i=[...Array.from(i).splice(0,t),...Array.from(i).splice(t + 1)]),i.push(r,u),s=setTimeout((()=>e.apply(this,i)),p))}))}
|
||||||
@@ -49,8 +49,8 @@ export default function damper(func, timeout = 300, force) {
|
|||||||
|
|
||||||
// Deleting the force argument
|
// Deleting the force argument
|
||||||
if (typeof force === "number") args = [
|
if (typeof force === "number") args = [
|
||||||
...args.splice(0, force),
|
...Array.from(args).splice(0, force),
|
||||||
...args.splice(force + 1)
|
...Array.from(args).splice(force + 1)
|
||||||
];
|
];
|
||||||
|
|
||||||
// Writing promise handlers into the arguments variable
|
// Writing promise handlers into the arguments variable
|
||||||
@@ -63,8 +63,8 @@ export default function damper(func, timeout = 300, force) {
|
|||||||
|
|
||||||
// Deleting the force argument
|
// Deleting the force argument
|
||||||
if (typeof force === "number") args = [
|
if (typeof force === "number") args = [
|
||||||
...args.splice(0, force),
|
...Array.from(args).splice(0, force),
|
||||||
...args.splice(force + 1)
|
...Array.from(args).splice(force + 1)
|
||||||
];
|
];
|
||||||
|
|
||||||
// Writing promise handlers into the arguments variable
|
// Writing promise handlers into the arguments variable
|
||||||
|
|||||||
Reference in New Issue
Block a user