##简介 最近总是遇到批量查询处理数据的任务,有时任务量很大就必须将任务分成若干批次,然后分批次 处理,于是创作了这个工具。
##特别说明
- 数据格式: 数据必须是以数组的形式传入,否则将抛出错误
- 错误处理: 若某个operation出现错误,模块会捕捉错误,并将该次处理结果置成undefined
- 异步操作: 若操作是类似http请求的异步操作,可使用Promise
##配置参数
- data : 即要处理的数据组成的数组,数组里面的每个数据应该是同类不同值的
- operation: 即针对单个数据所做的操作
- scale : 每批次操作的数据量
- log : Bool类型,表示是否显示进度
##事件
- data: 该事件表示某一个批次的处理结果已经来了
- end : 表示所有的数据已经处理完
- error:表示出现错误
npm install batch_task
- work with Promise
var BatchTask=require("batch_task");
var data=[];
for(var i=0;i<1000;i++)
{
data.push(i+1);
}
var options={
"scale":100,//how many datas to deal per time ,they will be lanched at the same time
"data":data,//the data must be an array
"log":true,//will log the progress
"operation":function(i){
//if the operation need time to accomplish(such as http request) ,you can return a Promise;
//if some error occured ,the result of this operation will return undefined ,each operation is
//independent
return new Promise(function(resolve,reject){
setTimeout(function(){
if(Math.random()>0.5)
{
resolve(i-1);
}else{
reject(new Error("test error"));
}
},200);
});
}
};
var batch=new BatchTask(options);
batch.fire();
batch.on("data",function(data){
console.log(data[data.length-1]);
});
batch.on("end",function(){
console.log("done");
});
batch.on("error",function(er){
console.log(er);
});
var BatchTask=require("batch_task");
var data=[];
for(var i=0;i<100000;i++)
{
data.push(i+1);
}
var options={
"scale":100,//how many datas to deal per time ,they will be lanched at the same time
"data":data,//the data must be an array
"operation":function(i){//your operation toward each data
return i-1;
}
};
var batch=new BatchTask(options);
batch.fire();
batch.on("data",function(data){
console.log(data[data.length-1]);
});
batch.on("end",function(){
console.log("done");
});
batch.on("error",function(er){
console.log(er);
});