https://github.com/izure1/delay-call
If the task overlaps, wait and run only once.
https://github.com/izure1/delay-call
callback-functions delay task
Last synced: 11 months ago
JSON representation
If the task overlaps, wait and run only once.
- Host: GitHub
- URL: https://github.com/izure1/delay-call
- Owner: izure1
- License: mit
- Created: 2021-12-22T12:41:56.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-03-14T20:53:52.000Z (about 3 years ago)
- Last Synced: 2025-04-03T11:19:22.677Z (about 1 year ago)
- Topics: callback-functions, delay, task
- Language: TypeScript
- Homepage:
- Size: 3.1 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# delay-call
[](https://www.jsdelivr.com/package/npm/delay-call)
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.
## Install
```bash
npm i delay-call
```
### Node.js
```javascript
import { DelayCall, DelayCallGlobally } from 'delay-call'
```
### Browser (umd)
```html
```
```javascript
const { DelayCall, DelayCallGlobally } = DelayCallJS
```
### Browser (module)
```javascript
import { DelayCall, DelayCallGlobally } from 'https://cdn.jsdelivr.net/npm/delay-call@latest/build/module/index.min.js'
```
## How to use
```javascript
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!');
});
}
```
## Methods
### request(id: `string|number|symbol`, callback: `() => void`, delay: `number` = 25): `this`
Request 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`.
### cancel(id: `string|number|symbol`): `boolean`
Cancel the requested task with the `id` parameter.
### cancelAll(): `boolean`
Cancel all requested tasks.
### done(id: `string|number|symbol`): `Promise`
Wait until the requested task of the 'id' parameter is actually called.
## Use for globally
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.
```javascript
// 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!');
});
}
```
## Docs
https://izure1.github.io/delay-call/
## License
This library follows the `MIT` license.