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 = ; { return ... ; } const myJobs = startDelay; myJobs; myJobs;
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.