A simple better event emitter
npm install subscribe- Install
- Usage
- Examples & Demos
- API
- Contribute
- License
``sh`
$ npm install --save subscribe
`javascript
// using ES6 modules
import { Emitter } from 'subscribe'
// using CommonJS modules
var { Emitter } = require('subscribe')
`
The UMD build is also available on unpkg:
`html`
You can find the library on window.__Emitter__.
`js
import {Emitter} from 'subscribe'
// OR
const {Emitter} = require('subscribe')
const eventbus = new Emitter()
// listen to an event
eventbus.on('foo', e => console.log('foo', e) )
// listen to all events
// This will fire first the 'type' event if it exists
eventbus.on('*', (type, e) => console.log(type, e) )
// fire an event
eventbus.emit('foo', { a: 'b' })
// working with handler references:
function onFoo() {}
eventbus.on('foo', onFoo) // listen
eventbus.off('foo', onFoo) // unlisten
// remove all listeners for specific event
eventbus.off('foo')
// Fire event listener only once
eventbus.once('knock knock', (data) => console.log("I will be fired only once"))
eventbus.emit('knock knock', null)
// This will not fire
eventbus.emit('knock knock', null)
`
For better autocompletion Emitter class takes parameters for possible event names :
`js`
import {Emitter} from 'subscribe'
const emitter = new Emitter<'foo' | 'bar'>()
emitter.on('foo', e => console.log('foo', e) )
emitter.on('bar', e => console.log('foo', e) )
// Will throw an error: (on typescript typecheck NOT ON RUNTIME!)
emitter.on('bar2', e => console.log('foo', e) )
*
* [constructor][1]
* [Parameters][2]
* [on][3]
* [Parameters][4]
* [off][5]
* [Parameters][6]
* [emit][7]
* [Parameters][8]
Use the constructor to initiate the eventbus with handlers
* listeners
* EventHandlerMap
Register an event handler for the given type.
type [String][9] Type of event to listen for, or "" for all eventshandler
* [Function][10] Function to call in response to given event
Remove an event handler for the given type.
type [String][9] Type of event to unregister handler from, or ""handler
* [Function][10] Handler function to remove
Invoke this.listeners handlers for the given type.
If present, "*" handlers are invoked after type-matched handlers.
Note: Manually firing "\*" handlers is not supported.
* type [String][9] The event type to invokeevt` Any? Any value (object is recommended and powerful), passed to each handler
*
[1]: #constructor
[2]: #parameters
[3]: #on
[4]: #parameters-1
[5]: #off
[6]: #parameters-2
[7]: #emit
[8]: #parameters-3
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
[10]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
Found a problem? Want a new feature? First of all see if your issue or idea has already been reported.
If don't, just open a new clear and descriptive issue.