You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

58 lines
1.3 KiB

var JobManager = require('../src/JobManager.js').JobManager;
var utils = require('../src/utils.js');
var range = utils.range;
var async = require('async');
var wrks = range(4);
wrks.forEach( function(v,k){
wrks[k] = function(data,cb){
console.log( 'S ', data );
setTimeout( function(){
console.log( 'E ', data );
cb();
} , ( 1 ) * 1000 );
};
wrks[k].id = v;
});
var tStart = 0;
var getTasks = function(){
var i, out=[];
for( i = 0; i< 50; i++, tStart++ ){
out[i] = tStart;
}
return out;
};
var tasks = getTasks();
if(0){
console.log( tasks.length );
var y = 0;
async.eachLimit( tasks, 300, function( data, cb ){
setTimeout( function(){
console.log( data );
cb();
} , 1);
}, console.log );
return;
}
var jm = new JobManager({concurrency: 6});
jm.tasks = tasks;
jm.workers = wrks;
jm.onError = function(err, task, worker ){
console.log( 'Error...', arguments );
};
jm.work = function(task, worker, cb){
// console.log( 'Worker ', worker.id, ' with ', task );
return worker( task, cb );
};
jm.onLoadMore = function( cb ){
console.log( 'Loading......');
this.tasks = this.tasks.concat( getTasks() );
return cb();
};
// jm.start();
jm._start();