The purpose of this library is to provide a simple way to schedule recurring events in Javascript using the EventEmitter pattern. It is desigend to provdie more information and structure than a simple setInterval, but less than a full blown cron job.
Get started by installing the package with npm.
npm install pulse-emit
Then import into your project the PulseEmitter object and any types (if using Typescript).
//Import the PusleEmitter Library
import { PulseEmitter, EventArray, EventDetails } from "pulse-emit";
To create an event, create an event object consisting of an eventName and cadence. Store many events in an evets array. In the following example, there are two events, Fizz and Buzz. Fizz happens every 3 seconds and Buzz happens every 5 seconds.
//Define the Events
const events: EventArray = [
{
eventName: 'Fizz',
cadence: 3_000,
} as EventDetails,
{
eventName: 'Buzz',
cadence: 5_000,
} as EventDetails,
];
To start the PulseEmitter, create a new instance of the PulseEmitter object and pass in the events array. Then listen for events.
const pulseEmitter = new PulseEmitter(events);
//Listen for 'Fizz' Events
pulseEmitter.listen.on('Fizz', (data) => {
// ... Do Something on A Fizz Event
});
//Listen for 'Buzz' Events
pulseEmitter.listen.on('Buzz', (data) => {
// ... Do Something on A Buzz Event
});
When an event is emitted, the event data is passed to the event listener. The event data is an object with the following properties:
- eventName: The name of the event.
- time: The Unix timestamp the event took palce on.
- event: An object with the following properties:
- status: The status of the event ("active", "inactive" or "stopped").
- firstExecuted: The Unix Time stamp since the first event of this type was executed.
- lastExecuted: The Unix Time stamp since the last event of this type was executed.
- occurrences: The number of times an event of this type has occurred.
You can manually add or stop events by calling the addEvent or stopEvent methods on the PulseEmitter object.
//Add a New Event
pulseEmitter.addEvent({
eventName: 'NewEvent',
cadence: 10_000,
} as EventDetails);
//Stop an Event
pulseEmitter.stopEvent('NewEvent');
To stop the PulseEmitter, call the stopAllEvents method on the PulseEmitter object.
pulseEmitter.stopAllEvents();