async-queue-progress
v1.1.1
Published
一个有执行进度展示的异步任务队列
Downloads
3
Maintainers
Readme
简介
这是一个有执行进度展示的异步任务队列,常用于批量抓取接口的任务执行和进度展示等...
借鉴于 single-line-log
库,在原基础上进行调整并封装了异步任务队列及执行进度展示
示例
const AsyncQueueProgress = require('async-queue-progress');
const taskQueue = AsyncQueueProgress({
asyncMax: 5,
});
main();
function main() {
taskQueue.progressBar.describe('加载中...');
for (let i = 0; i < 100; i += 1) {
taskQueue.add(task, `describe-${i}...`, `title-${i}:`, `data-${i}`);
}
taskQueue.start();
}
function task(data, index) {
return new Promise((resolve) => {
// 模拟完成任务
setTimeout(() => {
console.log(data);
if (index === 30) {
taskQueue.stop().then(() => {
console.log('[stop ] end', new Date());
});
}
resolve();
}, 1000 * Math.random());
});
}
文档
TaskQueue
progressBar
:ProgressBar
- 当前队列的进度条对象config
:(opts: TaskQueue.Options) => void
- 配置reset
:async () => void
- 重置clear
:async (opts: TaskQueue.Options) => void
- 清空opts
:配置项
add
:(promise, describe, title, data) => void
- 添加一个任务promise
:(data, index: Number) => Promise | async (data, index: Number) => void
- 要执行的任务describe
:String
- 执行时显示的描述title
:String
- 执行时显示的标题data
:String
- 数据
start
:() => Promise
- 开始/继续 执行任务stop
:() => Promise
- 暂停 执行任务index
:() => Number
- 当前执行的任务的下标length
:() => Number
-任务队列的长度isStop
:() => Boolean
- 是否未开始isWillComplete
:() => Boolean
- 是否即将完成isComplete
:() => Boolean
- 是否已经完成
TaskQueue.Options
asyncMax
:Number
- 任务最大异步执行数,默认为3
log
:Boolean
- 是否显示日志,默认为true
onComplete
:(isComplete: Boolean) => void
- 完成回调,默认为null
isComplete
:Boolean
- 是否完全的完成了,判断标准index
等于length
onStop
:(index: Number) => void
- 暂停回调,默认为null
index
:Number
- 暂停时当前项的下标
onError
:(error: Error, task: Task) => void
- 报错回调,默认为null
error
:Error
- 错误内容task
:Task
- 报错的任务
TaskQueue.Task
promise
:(data, index: Number) => Promise | async (data, index: Number) => void
- 要执行的任务describe
:String
- 执行时显示的描述title
:String
- 执行时显示的标题data
:String
- 数据
ProgressBar
config
:(opts: ProgressBar.Options) => this
- 配置title
:(val: String) => this
- 设置标题describe
:(val: String) => this
- 设置描述add
:(val: Number) => this
- 增加进度值val
:Number
- 要增加的进度值,默认1
value
:(val: Number, append: Boolean) => this
- 设置/增加 进度值val
:Number
- 要 设置/增加 的进度值,默认1
append
:Boolean
-false
设置,true
增加
total
:(val: Number, append: Boolean) => this
- 设置/增加 总数值val
:Number
- 要 设置/增加 的总数值,默认1
append
:Boolean
-false
设置,true
增加
isFull
:() => Boolean
- 进度是否是100%
render
:(force: Boolean) => void
- 刷新进度条force
:Boolean
- 是否强行刷新,否则按Options.renderRate
ms 刷新一次
quit
:() => void
- 结束这个进度条,下次刷新绘制新的进度条
ProgressBar.Options
valueChar
:String
- 进度填充字符,默认为'#'
emptyChar
:String
- 进度空白字符,默认为' '
length
:String
- 进度条长度,默认为50
title
:String
- 标题,默认为'load:'
describe
:String
- 描述,默认为''
total
:Number
- 总值,默认为0
value
:Number
- 进度值,默认为0
renderRate
:Number
- 刷新频率:ms/次,默认为16
format
:(data: PercentData) => String
- 将进度数据转换为字符串以显示,默认为:function format(data) { let title = `${data.title} ${(100 * data.percent).toFixed(3).substr(0, 5)}%`; if (data.describe) title = `${data.describe}\n${title}`; return `${title} [${data.cells}] [${data.percent * data.total}/${data.total}]\n`; },