DebounceMicrotask
Debounce a function using microtasks instead of timers.
Usage
import { debounceMicrotask } from "@vicary/debounce-microtask";
const debounced = debounceMicrotask((text: string) => {
console.log("debounced", text);
});
debounced("a");
debounced("b");
debounced("c");
await Promise.resolve();
Options
debounceLimit
Throws when the specified limit is reached before the function is run, this is a
safety measure preventing recursive debounces. You may disable it with
Infinity
.
Defaults to 1000.
import { debounceMicrotask } from "@vicary/debounce-microtask";
const debounced = debounceMicrotask(
(text: string) => {
console.log("debounced", text);
},
{ debounceLimit: 1 },
);
debounced("a");
debounced("b");
limitAction
Specifies the action to take when the debounce limit is reached.
Possible values are throw
, ignore
, and invoke
.
Defaults to throw
.
import { debounceMicrotask } from "@vicary/debounce-microtask";
const debounced = debounceMicrotask(
(text: string) => {
console.log("debounced", text);
},
{ limitAction: "throw" },
);
debounced("a");
debounced("b");
updateArguments
Updates the calling arguments to the latest invocation.
Defaults to false
.
import { debounceMicrotask } from "@vicary/debounce-microtask";
const debounced = debounceMicrotask(
(text: string) => {
console.log("debounced", text);
},
{ updateArguments: true },
);
debounced("a");
debounced("b");
debounced("c");
await Promise.resolve();
promise
Returns a promisified debounce function, the promise resolves when the specified
function is called.
import { debounceMicrotask } from "@vicary/debounce-microtask/promise";
const debounced = debounceMicrotask(
(text: string) => {
console.log("debounced", text);
},
{
updateArguments: true,
},
);
await Promise.all([
debounced("a"),
debounced("b"),
debounced("c"),
]);
Contributing
If you find a bug or would like to suggest a new feature, please open an issue
or submit a pull request on GitHub.
License
DebounceMicrotask is licensed under the MIT License. See the LICENSE file for
more information.
Funding
If you find this project useful, please consider supporting it by donating to
the author.