Simple scheduler to get rid of your setTimeout and setInterval calls.
The package exports a Scheduler
and a Job
class.
Creates a new Scheduler
instance with an empty job list and that is not running.
Starts scheduling and running jobs.
Stop scheduling and running new jobs.
Creates a new job instance attached to the scheduler instance.
See the documentation of Job
for more details.
Creates a new Job
instance with the code in func
attached to run when the scheduler criteria are fulfilled.
To attach it to a Scheduler
, the scheduler
argument must be given.
A name
can be attached for debugging or monitoring tools.
The start
event is emitted after the running
status was changed to true
and before func
is called.
The finish
event is emitted after func
returned, the running
status was changed to false
and the next call was scheduled.
The error
event is emitted whenever func
throws and error or rejects.
Schedules the job every time
milliseconds.
Schedules the job at Date.now()
, so it will be queued for the next schedule run.
Restarts the given job
.
Usually used in combination with the error
event like this:
scheduler
.job(() => {
// ...
})
.on('error', Job.restart)
Collects the errors emitted by the job in the errors
property as an Array
.
Usually used in combination with the error
event like this:
const job = scheduler
.job(() => {
// ...
})
.on('error', Job.collect)
if (job.errors) {
console.log(job.errors.map(err => err.message).join(', '))
}
import { Job, Scheduler } from 'scheduli'
async function main () {
const scheduler = new Scheduler()
scheduler
.job(() => {
console.log('job')
})
.every(1000)
.on('error', Job.restart)
scheduler.start()
}
main()