https://github.com/ckpack/scheduler
Execute asynchronous functions in order and limit the number of simultaneous executions
https://github.com/ckpack/scheduler
async scheduler
Last synced: about 2 months ago
JSON representation
Execute asynchronous functions in order and limit the number of simultaneous executions
- Host: GitHub
- URL: https://github.com/ckpack/scheduler
- Owner: ckpack
- License: mit
- Created: 2021-02-25T06:51:07.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-02-25T09:41:22.000Z (over 5 years ago)
- Last Synced: 2025-02-11T18:50:36.815Z (over 1 year ago)
- Topics: async, scheduler
- Language: JavaScript
- Homepage:
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# scheduler
Execute asynchronous functions in order and limit the number of simultaneous executions。
按顺序执行异步函数,并限制同时执行的数量。
# examples文档
### class: Scheduler( limit )
生成一个scheduler
+ `limit`: **number; default:4** Scheduler最大同时执行的数量;
+ `Returns`: scheduler
```js
let scheduler = new Scheduler(2);
```
### function: scheduler.add(handler, :args, :callback)
添加scheduler要执行的函数
+ `handler`: **function|async function** 要执行的异步或同步函数
+ `args`: 要执行函数的参数
+ `callback`: 回调函数
+ `Returns`:要执行的函数返回的结果
```js
async function timeoutAdd(time, ...args) {
return new Promise(resolve => {
setTimeout(() => {
let result = (args && args.length) && args.reduce((pre, cur) => {
return pre + cur;
});
console.log(`time:${time}, args:${args}, result:${result}`)
resolve(result)
}, time)
});
}
function callback(err, res) {
console.log(`callback:${res}`);
}
scheduler.add(timeoutAdd, [500, 3, 2]);
scheduler.add(() => timeoutAdd(1500, 2, 2));
scheduler.add(() => timeoutAdd(1500, 2, 2), null, callback);
scheduler.add(() => timeoutAdd(1500, 2, 2), null, (err, res) => {
console.log(`callback:${res}`)
});
```
### function: scheduler.adds(handlers, :callback)
添加scheduler要执行的函数
+ `handlers`: **array function** 要执行的异步或同步函数数组
+ `callback`: 回调函数
+ `Returns`:要执行的函数返回的结果
```javascript
scheduler.adds([() => timeoutAdd(1000, 1, 3), () => timeoutAdd(500, 1, 2, 3, 4), () => timeoutAdd(400, 1, 4), () => timeoutAdd(600)];
scheduler.adds([{
handler: timeoutAdd,
args: [3000, 1, 3],
}]);
scheduler.adds([{
handler: () => timeoutAdd(3000, 1, 3),
}, {
handler: () => timeoutAdd(1000),
},
{
handler: timeoutAdd,
args: [2000]
}, {
handler: timeoutAdd,
args: [100, 1, 5],
callback: callback,
}, {
handler: (val) => Promise.resolve(val),
args: ['哈哈哈'],
callback: (err, res) => {
console.log(`callback:${res}`)
},
}
]);
```
### 获取函数返回的结果
```javascript
console.log('获取函数结果', await scheduler.add(timeoutAdd, [1, 9, 7]));
console.log('获取函数结果',await scheduler.adds([{
handler: () => timeoutAdd(0, 1, 3),
}, {
handler: () => timeoutAdd(0,3,4),
}]))
```