0.1.0 • Published 4 years ago

scheduli v0.1.0

Weekly downloads
4
License
MIT
Repository
github
Last release
4 years ago

scheduli

Simple scheduler to get rid of your setTimeout and setInterval calls.

Usage

The package exports a Scheduler and a Job class.

Scheduler()

Creates a new Scheduler instance with an empty job list and that is not running.

start()

Starts scheduling and running jobs.

stop()

Stop scheduling and running new jobs.

job(func, options)

Creates a new job instance attached to the scheduler instance. See the documentation of Job for more details.

Job(func, { name, scheduler })

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.

Event: start

The start event is emitted after the running status was changed to true and before func is called.

Event: finish

The finish event is emitted after func returned, the running status was changed to false and the next call was scheduled.

Event: error

The error event is emitted whenever func throws and error or rejects.

every(time)

Schedules the job every time milliseconds.

start()

Schedules the job at Date.now(), so it will be queued for the next schedule run.

static restart(err, job)

Restarts the given job. Usually used in combination with the error event like this:

scheduler
  .job(() => {
    // ...
  })
  .on('error', Job.restart)

static collect(err, job)

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(', '))
}

Example

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()