"Fossies" - the Fresh Open Source Software Archive

Member "Atom/resources/app/apm/node_modules/event-kit/README.md" (17 Oct 2016, 2064 Bytes) of archive /windows/misc/atom-windows.zip:

As a special service "Fossies" has tried to format the requested source page into HTML format (assuming markdown format). Alternatively you can here view or download the uninterpreted source code file. A member file download can also be achieved by clicking within a package contents listing on the according byte size field.

event-kit Build Status

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() ```