signalus-simplex
Simple signal messaging system
Install
npm i signalus-simplex
Package on npm
API
add(cb, [ctx], [priority])
| cb | the callback |
| ctx | optional context for cb, default to undefined |
| priority | optional priority, higher is invoked first, default to 0 |
Simple example
const Signal = require('signalus-simplex')
var update = new Signal()
function cb(arg) {
console.log('hello', arg)
}
update.add(cb)
update.dispatch('world')
With context
const Signal = require('signalus-simplex')
function cb(num) {
console.log(num + this.val)
}
var ctx = { val:5 }
var update = new Signal()
update.add(cb, ctx)
update.dispatch(10)
With priority
const Signal = require('signalus-simplex')
function fun1() { console.log('a') }
function fun2() { console.log('b') }
function fun3() { console.log('c') }
var update = new Signal()
update.add(fun1)
update.add(fun2)
update.add(fun3, null, 2)
update.dispatch()
clear()
Remove all listeners
const Signal = require('signalus-simplex')
function fun1() { console.log('a') }
function fun2() { console.log('b') }
update.add(fun1)
update.add(fun2)
update.dispatch()
update.clear()
update.dispatch()
dispatch([arg], [arg], [...])
Dispatch with custom arguments
const Signal = require('signalus-simplex')
function cb(a, b) {
console.log('a:', b)
console.log('b:', b)
}
var update = new Signal()
update.add(cb)
update.dispatch('foo', 'bar')
Stop propagation by returning false
const Signal = require('signalus-simplex')
function fun1() { console.log('a'); return false }
function fun2() { console.log('b') }
update.add(fun1)
update.add(fun2)
update.dispatch()
has(cb, [ctx])
Check if cb is already registered
Return true if the exact same association cb / ctx was found
const Signal = require('signalus-simplex')
var update = new Signal()
function cb() {
console.log('hello world')
}
update.has(cb)
update.add(cb)
update.has(cb)
update.remove(cb)
update.has(cb)
once(cb, [ctx], [priority])
Like add but the callback cb will be invoked only once
The internal reference is automatically removed after the dispatch, using remove is not needed
Same options than add
const Signal = require('signalus-simplex')
var update = new Signal()
function cb() {
console.log('hello')
}
update.add(cb)
update.dispatch()
update.dispatch()
remove(cb, [ctx])
Remove the listener cb
The listener is removed only if the exact same association cb / ctx was added
const Signal = require('signalus-simplex')
function fun1() { console.log('a') }
function fun2() { console.log('b') }
function fun3() { console.log('c') }
function fun4() { console.log('d') }
var ctx1 = {}
var ctx2 = {}
update.add(fun1)
update.add(fun2)
update.add(fun3, ctx1)
update.add(fun4, ctx2)
update.remove(fun1)
update.remove(fun2, ctx1)
update.remove(fun3)
update.remove(fun4, ctx2)
update.dispatch()
Thanks
Mainly forked / inspired on
License
MIT