node-job-queue
v1.1.0
Published
A JS class to facilitate queuing and running generic tasks in node.js.
Downloads
8
Maintainers
Readme
Node Job Queue
A class to facilitate queuing and running jobs. Right now it only implements a synchronous queue, but it might be extended in the future to enable async jobs.
Basic Usage
First install: npm install --save node-job-queue
This class is meant to be extended (think of an abstract class in other languages).
const JobQueue = require('node-job-queue');
class MyJobQueue extends JobQueue {
runJob(job) {
return new Promise( ... );
}
}
const myJobs = new MyJobQueue(startDelay);
myJobs.addJob('Whatever your runJob method expects. Must be truthy');
myJobs.on('jobFinish', (job, jobQueue) => {
console.log(job + ' just finished.');
console.log('Now the queue looks like this: ' + jobQueue);
});
Subclasses are expected to override the runJob()
method. That method must
return a Promise that resolves when the job is finished (or rejects on errors).
API Details
The constructor takes the following arguments:
startDelay
(optional, default:0
): Wait this many milliseconds before starting the first job. After the first job has started there is no delay between jobs.jobDelay
(optional, default:0
): Wait this many milliseconds in between jobs as we process the queue.
The class emits the following events that you can listen for.
jobStart
: Triggered when a queued job starts. Listener args:(job, jobQueue)
jobFinish
: Triggered when a job completes. Listener args:(job, jobQueue)
jobAdd
: Triggered when a job is added to the queue. Listener args:(job, jobQueue)
jobRemove
: Triggered when a job is removed from the queue. Listener args:(jobQueue)
queueError
: Triggered when a job Promise rejects or when other errors occur. Listener args:(error, jobQueue)
The only "public" methods are:
addJob
: Pass in anything (string, object, function, etc.) that your runJob method expects to process. Must be a truthy value (i.e.jobs.addjob(0)
will fail).getQueue
: Returns an array of jobs currently in the queue.