npm i js-event-bus --save
yarn add js-event-bus
This library was built so you can use it in any JS application like Node.js apps, browser apps etc. The API is always the same.
If you want to use it in your Node.js apps you can import the library like this:
const eventBus = require('js-event-bus')();
If you want to use it in your Browser apps you can import the library like this:
<body>
<div>Put your content here</div>
<script src="/lib/js-event-bus/lib/js-event-bus.min.js"></script>
<script>
const eventBus = new EventBus();
</script>
</body>
eventBus.on('my-event', function () {
console.log('Inside `my-event`');
});
With this code, each time my-event
is emitted this function will be executed.
eventBus.once('my-event', function () {
console.log('Inside `my-event`. It\'ll be executed only one time!');
});
With this code, when my-event
is emitted this function will be executed. The next triggers of this event won't execute the callback because it is a one time event.
eventBus.exactly(3, 'my-event', function () {
console.log('Inside `my-event`. It\'ll be executed only 3 times!');
});
With this code, when my-event
is emitted this function will be executed with a maximum of triggers of 3.
You can use wildcards to register listeners using a specific pattern.
eventBus.on('my-event.*', function () {
console.log('Inside `my-event.*`');
});
The callback will be executed with the events like my-event.x
.
my-event.x
will trigger the callback ;my-event.y
will trigger the callback ;my-event
will not trigger the callback ;my-event.x.y
will not trigger the callback ;You can also use multiple wildcards to register listeners using a specific pattern.
eventBus.on('my-event.*.name.**', function () {
console.log('my-event.*.name.**`');
});
The callback will be executed with the events like my-event.a.name.b.c
.
my-event.a.name.b.c
will trigger the callback ;my-event.a.name.b
will trigger the callback ;my-event.name.b
will not trigger the callback ;You can emit an event by calling the emit
function. The arguments are the following:
Here are some examples:
eventBus.emit('my-event');
eventBus.emit('my-event', null, 'a', 'b'); // your callback sould be function (a, b) { ... }
eventBus.emit('my-event', new SomeObject, 'a', 'b'); // your callback sould be function (a, b) { ... } and `this` will be set to the context of `SomeObject`
var callbackForMyEvent = function () {
console.log('Inside `my-event`.');
};
eventBus.on('my-event', callbackForMyEvent);
eventBus.emit('my-event');
eventBus.detach('my-event', callbackForMyEvent);
This code will emit the event my-event
and then detach the given callback for this event. So it'll not be executed anymore.
eventBus.detach('my-event');
This code will remove the event my-event
from the event bus.
eventBus.detachAll();
This code will remove the event my-event
from the event bus.
eventBus.on('my-event', function () {
console.log('Inside `my-event`.');
});
eventBus.emit('my-event');
eventBus.die('my-event');
This code will emit the event my-event
and then detach all the callbacks for this event. So any of them won't be executed anymore.
Note that off
is an alias of die
.
Last modified 27 November 2024