diff options
Diffstat (limited to 'atom/packages/vim-mode/node_modules/event-kit/README.md')
| -rw-r--r-- | atom/packages/vim-mode/node_modules/event-kit/README.md | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/atom/packages/vim-mode/node_modules/event-kit/README.md b/atom/packages/vim-mode/node_modules/event-kit/README.md new file mode 100644 index 0000000..0dc343d --- /dev/null +++ b/atom/packages/vim-mode/node_modules/event-kit/README.md @@ -0,0 +1,68 @@ +# event-kit + +This is a simple library for implementing event subscription APIs. + +## Implementing Event Subscription APIs + +```coffee +{Emitter} = require 'event-kit' + +class User + constructor: -> + @emitter = new Emitter + + onDidChangeName: (callback) -> + @emitter.on 'did-change-name', callback + + setName: (name) -> + if name isnt @name + @name = name + @emitter.emit 'did-change-name', name + @name + + destroy: -> + @emitter.dispose() +``` + +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. + +```coffee +subscription = user.onDidChangeName (name) -> console.log("My name is #{name}") +# Later, to unsubscribe... +subscription.dispose() +``` + +You can also use `CompositeDisposable` to combine disposable instances together. + +```coffee +{CompositeDisposable} = require 'event-kit' + +subscriptions = new CompositeDisposable +subscriptions.add user1.onDidChangeName (name) -> console.log("User 1: #{name}") +subscriptions.add user2.onDidChangeName (name) -> console.log("User 2: #{name}") + +# Later, to unsubscribe from *both*... +subscriptions.dispose() +``` + +## 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. + +```coffee +{Disposable} = require 'event-kit' + +disposable = new Disposable => @destroyResource() +``` |