@neomasterr/event-emitter

1.1.4 • Public • Published

npm

EventEmitter

Simple lightweight inheritable event emitter with minimal footprint and zero dependencies

Example

import EventEmitter from '@neomasterr/event-emitter';

const ev = new EventEmitter();

ev.on('init', (foo, bar) => {
    console.log(foo, bar);
});

ev.emit('init', 'foo', 'bar');

Inheritance (mixin)

///////////////////////////
// my-super-component.js //
///////////////////////////
import EventEmitterMixin from '@neomasterr/event-emitter/mixin';

function MySuperComponent(options = {on: {}}) {
    EventEmitterMixin.call(this, options.on);

    // typeof this.emitter == 'EventEmitter'

    this.emit('init'); // or this.emitter.emit('init');

    setTimeout(() => {
        this.emit('init:after');
    }, 1000);
}

// mixin
Object.assign(MySuperComponent.prototype, EventEmitterMixin.prototype);

// prototype chaining
Object.defineProperty(MySuperComponent.prototype, 'constructor', {
    value: MySuperComponent,
    writable: true,
    enumerable: false,
});

/////////////
// page.js //
/////////////
import MySuperComponent from './my-super-component';

const component = new MySuperComponent({
    on: {
        init: () => {
            console.log('Hello world!');
        },
    },
});

component.on('init:after', () => {
    console.log('After init');
});

/@neomasterr/event-emitter/

    Package Sidebar

    Install

    npm i @neomasterr/event-emitter

    Weekly Downloads

    1

    Version

    1.1.4

    License

    MIT

    Unpacked Size

    8.52 kB

    Total Files

    7

    Last publish

    Collaborators

    • neomasterr