A Javascript Jobrunner with human syntax
- Jobs
- Queues
- Chains
npm install runjob
const Job = require('runjob')
const myJob = new Job(function () {
console.log('Look mum, I got a job!')
}, 'MyJob')
The name (second argument) is optional and is only relevant for the Job.tree() function
myJob.run.now()
myJob.run.in(500).ms()
myJob.run.in(2).seconds()
myJob.run.in(3).minutes()
myJob.run.every(500).ms()
myJob.run.every(2).seconds()
myJob.run.every(3).minutes()
myJob.run.at(new Date().getTime() + 3000) // Run at the Date in 3 seconds
myJob.run.at(new Date(new Date().getTime() + 4000)) // Run at the Date in 4 seconds
myJob.run.at(new Date()) // Run now
Just simply run
Job.tree()
A queue handles jobs successively and fires an event when the queue is empty. Queues also work like they are a job, so you can use something like myQueue.run.in(2).seconds()
to handle it at a certain time.
const myQueue = new Job.Queue()
First you need to create a few jobs. Then you can add them to the queue like this:
myQueue.add(jobOne, jobTwo)
myQueue.add(jobThree)
myQueue.handle().then(() => {
console.log('Queue finished!')
})
Chains are like queues, but they work simultaneously. This means that if the Chain is handled all jobs are started at the same time.
You can use a Chain exactly like a Queue, but you have to use Job.Chain
instead of Job.Queue
.
It's also important to know that Chains don't fire an event if they finished, so you can't use myChain.handle().then()
and have to use myChain.handle()