# job_scheduler

> It can schedule a particular job

Latest version **1.0.3** (published 2016-06-24) · ISC license · 0 weekly downloads

## Install

```sh
npm install job_scheduler
pnpm add job_scheduler
yarn add job_scheduler
bun add job_scheduler
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.3 |
| Published | 2016-06-24 |
| First published | 2016-06-11 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Suman Maity |
| Maintainers | suman.maity112 |
| Keywords | scheduler, timer, job manager, interval, job_scheduler, job scheduler, job, jobs, background, priority, queue, schedule |

## Links

- npm: https://www.npmjs.com/package/job_scheduler
- Repository: https://github.com/sumanmaity112/scheduler
- Homepage: https://github.com/sumanmaity112/scheduler#readme
- Issues: https://github.com/sumanmaity112/scheduler/issues
- npm.io page: https://npm.io/package/job_scheduler

## Dependencies (1)

- [js-priority-queue](https://npm.io/package/js-priority-queue.md) ^0.1.3

## Alternatives

- [cron](https://npm.io/package/cron.md) — 4.9M weekly downloads
- [@vercel/queue](https://npm.io/package/@vercel/queue.md) — 731.6K weekly downloads
- [create-sonicjs](https://npm.io/package/create-sonicjs.md) — 1.6K weekly downloads
- [@exellix/jobs-api](https://npm.io/package/@exellix/jobs-api.md) — 941 weekly downloads
- [@forwardimpact/libskill](https://npm.io/package/@forwardimpact/libskill.md) — 575 weekly downloads

## Recent versions

- 1.0.3 (latest) — 2016-06-24
- 1.0.2 — 2016-06-24
- 1.0.1 — 2016-06-11
- 1.0.0 — 2016-06-11

## README

# scheduler

It can schedule a particular job after certain amount of time depends on priority
  
## Install 
    $ npm install job_scheduler
## Usage
  
  ```js
  var Scheduler = require("job_scheduler");
  var main = function () {
      var scheduler = new Scheduler(1000*60);  //This time indicates the interval time between the scheduler's two cycle
      scheduler.addLimit(10, 5); // This two numbers indicates the totalJobLimit and normalPriorityJobLimit to perform jobs for a cycle
      scheduler.start(); //This start function takes one argument, which indicates the interval time between two job. If nothing is provided, by default it is 500 milliseconds
  
      for (var count = 0; count <= 10; count++) {
          scheduler.addJob(new Date().toLocaleString(), function (time) {
              console.log("This is a low priority job and scheduled at ", time, " and current time is ", new Date().toLocaleString());
          });
      }
  
      for (var count = 0; count <= 10; count++) {
          scheduler.addUrgentJob(new Date().toLocaleString(), function (time) {
              console.log("This is a high priority job and scheduled at ", time, " and current time is ", new Date().toLocaleString());
          });
      }
  
      scheduler.addJob(new Date().toLocaleString(), function (time) {
          console.log("This is a low priority job and scheduled at ", time, " and current time is ", new Date().toLocaleString());
      });
      scheduler.addUrgentJob(new Date().toLocaleString(), function (time) {
          console.log("This is a high priority job and scheduled at ", time, " and current time is ", new Date().toLocaleString());
      });
      scheduler.addJob(new Date().toLocaleString(), function (time) {
          console.log("This is a low priority job and scheduled at ", time, " and current time is ", new Date().toLocaleString());
      });
      scheduler.addUrgentJob(new Date().toLocaleString(), function (time) {
          console.log("This is a high priority job and scheduled at ", time, " and current time is ", new Date().toLocaleString());
      });
  };
  main();
  
```
## API
#### new Scheduler([delay])
###### delay
Type: `number` *(milliseconds)*

Default: `3600000 or an hour`

`delay` holds the time in milliseconds indicates after how much time the scheduler will start.
  
#### start([delay])
**delay**

Type: `number` *(milliseconds)*
    
Default: `500`
    
`delay` indicates the interval (milliseconds) between two job. It throws an error if limit is not already set.
 
#### stop()
Its stop the scheduler and remove all the task.

#### addJob(value,callback)
Its add a normal/low priority job to scheduler.
##### value
Type: `number, object, string`
  
`value` holds the value which will pass to callback function
##### callback
Type: `function`

`callback` is the function which will call with passed `value`
  
#### addUrgentJob(value,callback)
Its add a urgent/high priority job to scheduler.
 
##### value
Type: `number, object, string`

`value` holds the value which will pass to callback function
    
##### callback
Type: `function`

`callback` is the function which will call with passed `value`

#### addLimit(totalNumberOfJob [, normalJobLimit])
Its generate limit for the scheduler perform job in a certain time. It throws an error if totalNumberOfJob is not provided.
  
##### totalNumberOfJob
Type: `number`
  
Indicates the total number of job can completed by this scheduler
  
##### normalJobLimit
Type: `number`

Default: `0`

Indicates the maximum number of normal job can completed by this scheduler

*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If number of job is greater than limit, it will not perform any job for some time and scheduler will auto restart after the same amount of time, passed when scheduler was created.*

## License
ISC

---
_Source: https://npm.io/package/job_scheduler · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
