0.0.8 • Published 7 years ago
job-scheduler v0.0.8
About
job-scheduler is a job manager for nodejs, providing job creation, rescheduling, cancel, etc.
Installation
npm install job-scheduler
Quickstart
const jobScheduler = require('job-scheduler');
jobScheduler.scheduleJob(function() {
console.log('hello from job'); // log will be printed in 3000ms
}, 3000);
API
scheduleJob(callback
, time
, options
)
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(options
, time
)
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.
cancelJob(options
)
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'});
cancelAll()
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();
doNow(options
, remove
)
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);
Build the src
npm run build
The build result will be in dist folder.