Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tuchk4/base-events
base-events package. Provides easy way to subscribe and emit events. Super light component
https://github.com/tuchk4/base-events
Last synced: 21 days ago
JSON representation
base-events package. Provides easy way to subscribe and emit events. Super light component
- Host: GitHub
- URL: https://github.com/tuchk4/base-events
- Owner: tuchk4
- Created: 2016-01-19T08:56:45.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-07-24T10:00:28.000Z (over 7 years ago)
- Last Synced: 2024-10-15T04:32:32.152Z (29 days ago)
- Language: JavaScript
- Homepage:
- Size: 4.88 KB
- Stars: 15
- Watchers: 4
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Base events
Provides easy way to subscribe and emit events. Super light component
`npm install --save base-events`
### How to use```js
import BaseEvents from 'base-events';const events = new BaseEvents();
events.on('a.b.c', () => {
console.log('a.b.c fired');
});events.once('x.y.z', () => {
console.log('x.y.z fired');
});events.emit('a.b.c');
events.emit('x.y.z');events.emit('x.y.z'); // will not emit x.y.z for second time
const off = events.on('a', () => {
// ....
});off(); // unsubscribe listener
```### Extends
```js
import BaseEvents from 'base-events';class Manager extends BaseEvents {
constructor() {
super();
}
add(component) {
// ...
this.emit('component.add', {
component
});
}
}const manager = new Manager();
manager.on('component.add', ({ component }) => {
// ....
});
```### Available methods
- `on(event, callback)` - subscribe for event. Returns **unsubscribe** function
- `once(event, callback)` - subscribe for event. Will be emitted only one time
- `emit(event, arguments)` - trigger event with provided arguments### Community
You are always welcome for ideas and pull requests :)### TODO
- [ ] Event keys as patterns. If you are interested in this - please comment here https://github.com/tuchk4/base-events/issues/1
```js
const events = new BaseEvents();events.on('a', () => { ... });
events.on('a.*', () => { ... });
events.on('a.b.c', () => { ... });
events.on('a.*.c', () => { ... });events.emit('a', params); // available listeners: a
events.emit('a.b.c', params); // available listeners: a.* / a.b.c / a.*.c
events.emit('a.B.c', params); // available listeners: a.*.cevents.emit('x.y.z', params); // no listeners
events.emit('a', params); // available listeners: a
```