0.1.1 • Published 9 years ago
signalus-simplex v0.1.1
signalus-simplex
Simple signal messaging system
Install
npm i signalus-simplexPackage on npm
API
add(cb, ctx, priority)
| Argument | Action |
|---|---|
| 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)
// hello world
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)
// 15
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)
// c
// a
// b
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)
// a
// b
update.dispatch()
update.clear()
update.dispatch() // do nothingdispatch(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)
// a: foo
// b: bar
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)
// a
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')
}
// false
update.has(cb)
update.add(cb)
// true
update.has(cb)
update.remove(cb)
// false
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)
// hello
update.dispatch()
update.dispatch() // do nothingremove(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)
// not removed because fun2 is registered without context
update.remove(fun2, ctx1)
// not removed because fun3 is registered with `ctx1`
update.remove(fun3)
update.remove(fun4, ctx2)
// b
// c
update.dispatch()Thanks
Mainly forked / inspired on
License
MIT