@domain.js/parallel
v0.2.1
Published
domain.js parallel 通用模块
Downloads
13
Readme
@domain.js/parallel
Installation
cnf
专属配置名称 parallel
| 名称 | 类型 | 必填 | 默认值 | 描述 | 样例 |
| ---- | ---- | ---- | ------ | ---- | ---- |
| key | string | 是
| 否
| 记录并发锁的 redis 记录key | parallels |
| defaultErrorFn | funtion | 是
| 否
| 处理并发锁申请错误函数 | Error |
deps
| 模块名 | 别名 | 用到的方法 | 描述 |
| ------ | ---- | ---------- | ---- |
| logger | 无
| info | 输出观点时刻的信息,便于分析日志 |
| graceful | 无
| exit | 注册进程退出的执行函数,便于在退出时清理残留锁 |
| redis | 无
| hsetnx, hdel, hexists | 并发锁利用 redis hash 类型数据实现 |
| utils | U
| sleep | 实现在申请锁的等待功能 |
| async | 无
| whilst | 实现在申请锁,需要等待的时候循环等待 |
Usage
| 功能 | 描述 | 样例 | | ---- | ---- | ---- | | parallel | 封装一个函数,使其拥有并发控制的能力,不改变其原有行为 | parallel(fn, { path: 'test' }) |
parallel 函数参数
| 顺序 | 参数名 | 类型 | 必填 | 默认值 | 描述 | 样例 |
| ---- | ------ | ---- | ---- | ------ | ---- | ---- |
| 1 | fn | function | 是
| 无
| 要加工处理的函数 | const test = () => { } |
| 2 | opt | object | 是
| 无
| 加工函数的参数控制 | { path: 'test' } |
| 2 | opt.path | string | 是
| 无
| 并发控制锁名称 | test |
| 2 | opt.keyFn | function | 否
| 无
| 计算并发锁名称的函数,第一个参数为 path, 之后为原函数的调用参数 | (path, name) => ${path}:${name}
|
| 2 | opt.minMS | integer | 否
| 0 | 函数执行最小占用毫秒数,并发锁至少为保持这么长时间,单位毫秒 | 1000 |
| 2 | opt.errorFn | function | 否
| defaultErrorFn | 函数请求并发锁错误时调用的错误处理函数,不设置则会调用 defaultErrorFn | Error |
| 2 | opt.needWaitMS | integer | 否
| 0 | 函数是否对应需要执行,没有申请到就等待,needWaitMS 是循环判断的时间间隔,单位毫秒 | Error |
| 2 | opt.neverReturn | Boolean | 否
| false | 函数是否永不返回,相当于进程启动,只需要执行一次,后续一直不删除并发锁 | Error |