https://github.com/seppevs/scheduled-event-emitter
Schedule events to be emitted in the future
https://github.com/seppevs/scheduled-event-emitter
eventemitter events javascript js node nodejs scheduled scheduledeventemitter
Last synced: 18 days ago
JSON representation
Schedule events to be emitted in the future
- Host: GitHub
- URL: https://github.com/seppevs/scheduled-event-emitter
- Owner: seppevs
- Created: 2019-05-24T09:18:02.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-07-12T04:22:11.000Z (about 4 years ago)
- Last Synced: 2025-04-05T12:11:17.595Z (6 months ago)
- Topics: eventemitter, events, javascript, js, node, nodejs, scheduled, scheduledeventemitter
- Language: JavaScript
- Size: 740 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# scheduled-event-emitter
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) ✨
## Introduction
With this module, you can schedule events to be emitted in the future.## Installation
```bash
$ npm install scheduled-event-emitter --save
```## API
### `new ScheduledEventEmitter()`
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.### `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
```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
```## Schedule an event to be emitted within a certain time
```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
```## Cancel the emission of a single event
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)
```## Cancel the emission of ALL scheduled events
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)
```