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.
44 lines
1.0 KiB
44 lines
1.0 KiB
var JobManager = require('../src/JobManager.js').JobManager;
|
|
var utils = require('../src/utils.js');
|
|
var range = utils.range;
|
|
|
|
var wrks = range(400000);
|
|
wrks.forEach( function(v,k){
|
|
wrks[k] = function(data,cb){
|
|
var self = this;
|
|
process.nextTick(function(){
|
|
// console.log( 'I am done: ', v );
|
|
cb( null, data);
|
|
} );
|
|
};
|
|
wrks[k].id = v;
|
|
});
|
|
|
|
var tStart = 0;
|
|
var getTasks = function(){
|
|
var i, out=[];
|
|
for( i = 0; i< 1000; i++, tStart++ ){
|
|
out[i] = tStart;
|
|
}
|
|
return out;
|
|
};
|
|
|
|
var tasks = getTasks();
|
|
|
|
var jm = new JobManager({concurrency:3});
|
|
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();
|
|
|