event-kit
This is a simple library for implementing event subscription APIs.
Implementing Event Subscription APIs
const Emitter = { thisemitter = } { thisemitter } { if name !== thisname thisname = name thisemitter return thisname } { thisemitter }
In the example above, we implement ::onDidChangeName
on the user object, which
will register callbacks to be invoked whenever the user's name changes. To do
so, we make use of an internal Emitter
instance. We use ::on
to subscribe
the given callback in ::onDidChangeName
, and ::emit
in ::setName
to notify
subscribers. Finally, when the User
instance is destroyed we call ::dispose
on the emitter to unsubscribe all subscribers.
Consuming Event Subscription APIs
Emitter::on
returns a Disposable
instance, which has a ::dispose
method.
To unsubscribe, simply call dispose on the returned object.
const subscription = user// Later, to unsubscribe...subscription
You can also use CompositeDisposable
to combine disposable instances together.
const CompositeDisposable = const subscriptions = subscriptions
Creating Your Own Disposables
Disposables are convenient ways to represent a resource you will no longer need at some point. You can instantiate a disposable with an action to take when no longer needed.
const Disposable = const disposable = this