Javascript Events and Hooks
Installation can be done via package managers such as npm or yarn
% npm install capillaries
# or
% yarn add capillaries
import { Events } from 'capillaries';
const event = new Events();
const listener = function (payload) {
console.log('Event Received:', payload);
};
// create a event listeners
event.on('connecting', listener);
event.on('connected', listener, this); // optionally bind context to the listener when invoked
// listen to all events
event.on('*', (type, payload) => {});
// dispatch events
event.emit('connected', 'paylod');
// remove a event listener
const unsubscribe = event.on('connected', listener);
unsubscribe();
// remove all listeners for given event
event.unbindAll('connected');
// unbind all event listeners
event.unbindAll();
import { AsyncEvents } from 'capillaries';
const event = new AsyncEvents();
const handler = async function (payload) {
console.log('Event Received:', payload);
};
// create a event handler
event.on('connected', handler);
// call the event
await event.call('connected', 'paylod');
// remove a event listener
const unsubscribe = event.on('connected', handler);
unsubscribe();
// unbind/remove all events
event.unbindAll();
Only one event handler can be attached per event. Attaching more than one event will throw an error.
import { Hooks } from 'capillaries';
const hooks = new Hooks();
// create a tap
hooks.tap('Hook', () => {
return 'Hello World!';
});
hooks.tap('AsyncHook', async () => {
return 'Hello World!';
});
// Call the taps
hooks.call('Hook', payload); //-> returns undefined
hooks.callWaterFall('Hook', payload); //-> returns 'Hello World!'
hooks.callAsync('AsyncHook', payload); // awaits on taps, returns undefined
hooks.callAsyncWaterFall('AsyncHook', payload); // awaits on taps, returns 'Hello World!'
// remove all hooks
hooks.clear();
Hooks are executed in order. The calling waterfall hook passes a return value from each function to the next function and returns data from the last tap
- Chrome 38+
- Edge 12+
- Firefox 13+
- Opera 25+
- Safari 8+
- Internet Explorer 11