Skip to content

About

Schedule events to be emitted in the future

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

Repository files navigation

scheduled-event-emitter

Schedule events to be emitted in the future

✨ Build Status Coverage Status NPM Downloads Dependencies Known Vulnerabilities ✨

Introduction

With this module, you can schedule events to be emitted in the future.

Installation

$ npm install scheduled-event-emitter --save

API

new ScheduledEventEmitter()

Constructs a new scheduledEventEmitter instance.

Note: ScheduledEventEmitter extends the Node.js EventEmitter, so you can use all of its functions.

scheduledEventEmitter.scheduleEmit(eventName, date, payload) → timeout

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

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

Schedule an event to be emitted within a certain time

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

Cancel the emission of a single event

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)

Cancel the emission of ALL scheduled events

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)

About

Schedule events to be emitted in the future

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages