@vandeurenglenn/little-pubsub
v1.5.2
Published
Publish & Subscribe
Maintainers
Readme
little-pubsub
Small publish & subscribe class
INSTALL
npm
npm i --save @vandeurenglenn/little-pubsubUSAGE
import PubSub from '@vandeurenglenn/little-pubsub'
const pubsub = new PubSub()Breaking Changes
v1.5.0
subscribe[context] & unsubscribe[context] -> subscribe[options({keepValue, context})]
// before
pusbub.subscribe(topic, handler, context)
// now
pusbub.subscribe(topic, handler, { context })Example
import PubSub from '@vandeurenglenn/little-pubsub'
const pubsub = new PubSub()
pubsub.subscribe('event', (value) => {
console.log(value)
})
pubsub.publish('event', 'hello')
// always runs handler
// (can use to overide littlePubsub.verbose setting without changing the behavior of the rest)
pubsub.publishVerbose('event', 'hello')
pubsub.unsubscribe('event', (value) => {
console.log(value)
})
pubsub.hasSubscribers('event')
await pubsub.once('event')API
pubsub(verbose?)
verbose: when false only fires after value change (default: false)
const pubsub = new PubSub() // verbose defaults to false
const pubsub = new PubSub(true) // always trigger handlerssubscribe
name: name of the channel to subscribe to
handler: method
options: { context }
Subscribing to an event returns an unsubscribe function. If value already exists, handler is called immediately.
const unsubscribe = pubsub.subscribe('event-name', (data) => {
console.log(data)
})
// Later: clean unsubscribe
unsubscribe()unsubscribe
name: name of the channel to unsubscribe
handler: method
options: { context, keepValue }
pubsub.unsubscribe(
'event-name',
(data) => {
console.log(data)
},
{ keepValue: false } // default
)publish
name: name of the channel to publish to
handler: method
verbose: boolean
pubsub.publish('event-name', 'data')publish
name: name of the channel to publish to
handler: method
pubsub.publishVerbose('event-name', 'data')once
name: name of the channel to get the value from
pubsub.getValue('event-name')once
name: name of the channel to publish to
await pubsub.once('event-name')hasSubscribers
name: name of the channel to check
pubsub.hasSubscribers('event-name') // true or falsesubscriberCount
name: name of the channel to count
pubsub.subscriberCount('event-name') // number of handlersclear
Removes all subscribers and values.
pubsub.clear()