event-kit

WebJar for event-kit

License

License

MIT
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

event-kit
Last Version

Last Version

2.5.0
Release Date

Release Date

Type

Type

jar
Description

Description

event-kit
WebJar for event-kit
Project URL

Project URL

http://webjars.org
Source Code Management

Source Code Management

https://github.com/atom/event-kit

Download event-kit

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/event-kit/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>event-kit</artifactId>
    <version>2.5.0</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/event-kit/
implementation 'org.webjars.npm:event-kit:2.5.0'
// https://jarcasting.com/artifacts/org.webjars.npm/event-kit/
implementation ("org.webjars.npm:event-kit:2.5.0")
'org.webjars.npm:event-kit:jar:2.5.0'
<dependency org="org.webjars.npm" name="event-kit" rev="2.5.0">
  <artifact name="event-kit" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='event-kit', version='2.5.0')
)
libraryDependencies += "org.webjars.npm" % "event-kit" % "2.5.0"
[org.webjars.npm/event-kit "2.5.0"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

event-kit

OS X Build Status Windows Build Status Dependency Status

This is a simple library for implementing event subscription APIs.

Implementing Event Subscription APIs

const {Emitter} = require('event-kit')

class User {
  constructor() {
    this.emitter = new Emitter()
  }

  onDidChangeName(callback) {
    this.emitter.on('did-change-name', callback)
  }

  setName(name) {
    if (name !== this.name) {
      this.name = name
      this.emitter.emit('did-change-name', name)
    }

    return this.name
  }

  destroy() {
    this.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.

const 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.

const {CompositeDisposable} = require('event-kit')

const 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.

const {Disposable} = require('event-kit')

const disposable = new Disposable(() => this.destroyResource())
org.webjars.npm

Atom

Free and open source text editor, brought to you by GitHub

Versions

Version
2.5.0