An open API service indexing awesome lists of open source software.

https://github.com/soenkekluth/micromitter

minimal and performant event emitter / dispatcher
https://github.com/soenkekluth/micromitter

data dispatch dispatcher emit emitter event eventdriven handler on send trigger

Last synced: 8 months ago
JSON representation

minimal and performant event emitter / dispatcher

Awesome Lists containing this project

README

          

# micromitter

minimal and performant event emitter / emitter with custom events and payload

## API

#### Table of Contents

- [constructor](#constructor)
- [on](#on)
- [off](#off)
- [once](#once)
- [emit](#emit)

### constructor

Creates an instance of MicroMitter.

**Parameters**

- `target` **any** the event target

### on

adds an event handler to an event type

**Parameters**

- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
- `handler` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)**

**Examples**

```javascript
emitter.on('type', (e)=>{
console.log(e);
});
```

Returns **MicroMitter** self

### off

removes either a specific handler or all handlers related to an event type

**Parameters**

- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
- `handler` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)**

Returns **MicroMitter** self

### once

adds an event handler to an event type and immediately removes it after first event call

**Parameters**

- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
- `handler` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)**

**Examples**

```javascript
emitter.onc('type', (e)=>{
console.log('only once');
});
```

Returns **MicroMitter** self

### emit

triggers an event for a specific type with an optional data object

**Parameters**

- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
- `data` **any** (optional, default `{}`)

**Examples**

```javascript
emitter.off('type', handler);
```

Returns **MicroMitter** self

## Usage

```js
import Emitter from 'micromitter';

const emitter = new Emitter();

emitter.on('test', (e)=>{
console.log(e.type === 'test');
console.log(e.foo === 'bar');
});

emitter.emit('test', {foo:'bar'});
emitter.off('test');

let counter = 0;
emitter.once('oneTime', (e)=>{
counter += 1;
});

emitter.emit('oneTime', {foo:'bar'});
emitter.emit('oneTime', {foo:'bar'});
emitter.emit('oneTime', {foo:'bar'});
emitter.emit('oneTime', {foo:'bar'});
console.log(counter); // 1
```

### chaining

```js
emitter
.on('type', handler)
.emit('type', {foo:'bar'})
.off('type', handler);
```

### use global instance

```js
import {emitter} from 'micromitter';

emitter.on('test', (e)=>{
console.log(e.type === 'test');
console.log(e.foo === 'bar');
});

emitter.emit('test', {foo:'bar'});
```

### use decorator

```js
import { micromitter } from 'micromitter';

//v1: use es7 decorators
@micromitter
class Tester {
onTest(e){
console.log(e.type === 'test');
console.log(e.foo === 'bar');
}
}

//v2 use the decorator as a function
micromitter(Tester);

const tt = new Tester();

tt.on('test', tt.onTest);
tt.emit('test', {foo:'bar'});
```