async-queue-progress v1.1.1
简介
这是一个有执行进度展示的异步任务队列,常用于批量抓取接口的任务执行和进度展示等...
借鉴于 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- 任务最大异步执行数,默认为3log:Boolean- 是否显示日志,默认为trueonComplete:(isComplete: Boolean) => void- 完成回调,默认为nullisComplete:Boolean- 是否完全的完成了,判断标准index等于length
onStop:(index: Number) => void- 暂停回调,默认为nullindex:Number- 暂停时当前项的下标
onError:(error: Error, task: Task) => void- 报错回调,默认为nullerror: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- 要 设置/增加 的进度值,默认1append:Boolean-false设置,true增加
total:(val: Number, append: Boolean) => this- 设置/增加 总数值val:Number- 要 设置/增加 的总数值,默认1append:Boolean-false设置,true增加
isFull:() => Boolean- 进度是否是100%render:(force: Boolean) => void- 刷新进度条force:Boolean- 是否强行刷新,否则按Options.renderRatems 刷新一次
quit:() => void- 结束这个进度条,下次刷新绘制新的进度条
ProgressBar.Options
valueChar:String- 进度填充字符,默认为'#'emptyChar:String- 进度空白字符,默认为' 'length:String- 进度条长度,默认为50title:String- 标题,默认为'load:'describe:String- 描述,默认为''total:Number- 总值,默认为0value:Number- 进度值,默认为0renderRate:Number- 刷新频率:ms/次,默认为16format:(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`; },