If the task overlaps, wait and run only once.
For example, suppose that when a file is changed, it automatically calls the build command.
And if 1000 files are modified at the same time, the build command is called 1000 times.
This is not good for performance. It would be nice to ignore duplicate calls and only respond to the last call.
This library helps you implement those functions easily.
npm i delay-call
import { DelayCall, DelayCallGlobally } from 'delay-call'
<script src="https://cdn.jsdelivr.net/npm/delay-call@latest/build/main/index.min.js"></script>
const { DelayCall, DelayCallGlobally } = DelayCallJS
import { DelayCall, DelayCallGlobally } from 'https://cdn.jsdelivr.net/npm/delay-call@latest/build/module/index.min.js'
import { DelayCall } from 'delay-call';
const delay = new DelayCall();
function build() {
// ...
}
function onChangeFile() {
delay
.request('build-file', build)
.done('build-file')
.then(() => {
console.log('built done!');
});
}
string|number|symbol, callback: () => void, delay: number = 25): thisRequest to execute the callback function. The function is not called immediately and waits as much as the delay parameter. The default value of the delay is this.__delay.
string|number|symbol): booleanCancel the requested task with the id parameter.
booleanCancel all requested tasks.
string|number|symbol): Promise<void>Wait until the requested task of the 'id' parameter is actually called.
Sometimes build commands can be called from multiple files. It would be nice if we could delay the work globally.
You can use the DelayCallGlobally class. The method of use is the same.
// file A
import { DelayCallGlobally } from 'delay-call';
const delay = new DelayCallGlobally();
function build() {
// ...
}
function onChangeFile() {
delay
.request('build-file', build)
.done('build-file')
.then(() => {
console.log('built done!');
});
}
// file B
import { DelayCallGlobally } from 'delay-call';
const delay = new DelayCallGlobally();
function build() {
// ...
}
function onChangeFile() {
delay
.request('build-file', build)
.done('build-file')
.then(() => {
console.log('built done!');
});
}
https://izure1.github.io/delay-call/
This library follows the MIT license.
Generated using TypeDoc