job-scheduler is a job manager for nodejs, providing job creation, rescheduling, cancel, etc.
npm install job-scheduler
const jobScheduler = require('job-scheduler');
jobScheduler.scheduleJob(function() {
console.log('hello from job'); // log will be printed in 3000ms
}, 3000);
Schedule a job, happening in time
ms from now on.
-
callback
- (Function, Require) What to be done in the job. -
time
- (Number, Optional, Defaultzero
) A millisecond based time point, when will the job happen. -
options
- (Object, Optional, Default{}
) Job options.-
loop
- (Boolean, Optional, Defaultfalse
) Whether it's a loop job.-
true
, the job will happen everytime
ms(setInterval-like). -
false
, the job will happen only once intime
ms from now on(setTimeout-like).
-
-
exclusive
- (Boolean, Optional, Defaultfalse
) If it's aloop
job andexclusive
istrue
. Job instances will happen one one by one, no overlap. The interval between job instances istime
ms. -
argArray
- (Array, Optional, Defaultundefined
) The argument array ofcallback
;
-
You can also put any other properties in the options
for searching jobs, described in subsequent APIs.
jobScheduler.scheduleJob(function(args) {
console.log('job args', args); //job args [ 1, 2, 3 ]
}, 3000, {loop: true, exclusive: true, argArray: [1, 2, 3]});
Reschedule a job(s).
-
options
- (Object, Optional, Default{}
) Which job(s) will be rescheduled. Only the job(s) whoseoptions
is equal to or contains the givenoptions
, will be rescheduled. Defaultoptions
means rescheduling all jobs. -
time
- (Number, Optional, Defaultzero
) Reschedule time.
jobScheduler.scheduleJob(function() {
console.log('job happen',); // job will not happen in 3000ms.
}, 3000, {jobName: 'MyJob'});
// sleep 1 second
jobScheduler.reschedule({jobName: 'MyJob'}, 5000); // job will happen in 5000ms from now on.
Cancel a job(s).
-
options
- (Object, Optional, Default{}
) Which job(s) will be canceled, likereschedule
.
jobScheduler.scheduleJob(function() {
console.log('job happen',); // job will not happen.
}, 3000, {jobName: 'MyJob'});
// sleep 1 second
jobScheduler.cancelJob({jobName: 'MyJob'});
Cancel all jobs.
jobScheduler.scheduleJob(function() {
console.log('job1 happen',); // job1 will not happen.
}, 3000, {jobName: 'MyJob1'});
jobScheduler.scheduleJob(function() {
console.log('job2 happen',); // job2 will not happen.
}, 3000, {jobName: 'MyJob2'});
// sleep 1 second
jobScheduler.cancelAll();
Let a job(s) happen right now.
-
options
- (Object, Optional, Default{}
) Which job(s) will be done now, likereschedule
. -
remove
- (Boolean, Optional, Defaultfalse
) Whether to remove the job(s) after do it now.-
true
- Remove it after do it now. -
false
- Keep it after do it now, it will happen again when its scheduled time is coming.
-
jobScheduler.scheduleJob(function() {
console.log('job happen',); // job will happen in 1000ms instead of 3000ms.
}, 3000, {jobName: 'MyJob'});
// sleep 1 second
jobScheduler.doNow({jobName: 'MyJob'}, true);
npm run build
The build result will be in dist folder.