Schedule events to be emitted in the future
With this module, you can schedule events to be emitted in the future.
$ npm install scheduled-event-emitter --save
Constructs a new scheduledEventEmitter instance.
Note: ScheduledEventEmitter extends the Node.js EventEmitter, so you can use all of its functions.
Schedules an event with name eventName
. This event will be emitted on date
with payload payload
This function returns a timeout
, which can be used to cancel the event (with the clearTimeout
function).
Note: the event is scheduled in memory. So when you restart your Node.js process, the scheduled event is gone.
Cancels all scheduled events
const ScheduledEventEmitter = require('scheduled-event-emitter');
const emitter = new ScheduledEventEmitter();
emitter.on('deadlineReached', (payload) => console.log(payload));
emitter.scheduleEmit('deadlineReached', new Date('2030-01-01T00:00:00.000Z'), 'Happy New Year!');
// Will write `Happy New Year!` on the first of January 2030
const ScheduledEventEmitter = require('scheduled-event-emitter');
const emitter = new ScheduledEventEmitter();
emitter.on('playDrums', (payload) => console.log(payload));
const deadline = new Date(new Date().getTime() + 5000);
emitter.scheduleEmit('playDrums', deadline, 'Ba Dum Tss');
// Writes `Ba Dum Tss!` to the console after 5 seconds
To cancel an event, pass the timeout
(returned by the scheduleEmit
function) to the clearTimeout function
const ScheduledEventEmitter = require('scheduled-event-emitter');
const emitter = new ScheduledEventEmitter();
emitter.on('playDrums', (payload) => console.log(payload));
const deadline = new Date(new Date().getTime() + 5000);
const timeout = emitter.scheduleEmit('playDrums', deadline, 'Ba Dum Tss');
clearTimeout(timeout);
// Nothing will be written to the console (because we cancelled the event)
Use the clearSchedule
function for this
const ScheduledEventEmitter = require('scheduled-event-emitter');
const emitter = new ScheduledEventEmitter();
emitter.on('giveWarning', (payload) => console.log(payload));
const firstDeadline = new Date(new Date().getTime() + 5000);
emitter.scheduleEmit('giveWarning', firstDeadline, 'First warning, please fix it');
const secondDeadline = new Date(new Date().getTime() + 5000);
emitter.scheduleEmit('giveWarning', secondDeadline, 'Second warning, please fix it ASAP!!');
emitter.clearSchedule();
// Nothing will be written to the console (because we cancelled ALL scheduled events)