scheduled-event-emitter
Version:
Schedule events to be emitted in the future
93 lines (62 loc) • 4.02 kB
Markdown
Schedule events to be emitted in the future
✨ [](https://travis-ci.org/seppevs/scheduled-event-emitter) [](https://coveralls.io/r/seppevs/scheduled-event-emitter) [](https://www.npmjs.org/package/scheduled-event-emitter) [](https://www.npmjs.org/package/scheduled-event-emitter) [](https://david-dm.org/seppevs/scheduled-event-emitter) [](https://snyk.io/test/github/seppevs/scheduled-event-emitter) ✨
With this module, you can schedule events to be emitted in the future.
```bash
$ npm install scheduled-event-emitter --save
```
Constructs a new scheduledEventEmitter instance.
Note: ScheduledEventEmitter extends the [Node.js EventEmitter](https://nodejs.org/api/events.html#events_class_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.
### `scheduledEventEmitter.clearSchedule()`
Cancels all scheduled events
## Demo's
## Schedule an event on a fixed date
```javascript
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
```
```javascript
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](https://nodejs.org/api/timers.html#timers_cleartimeout_timeout) function
```javascript
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
```javascript
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)
```