Skip to content

Implements the subject/observer pattern with ECMAScript 6

License

Notifications You must be signed in to change notification settings

olvlvl/olvlvl-subject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Subject

npm

This package implements the subject/observer pattern in ECMAScript 6.

This implementation differs from classic event emitter implementations because its events are typed and they are not identified using magic strings but their constructor, symbols are used under the hood. This removes errors due to typos or usage of deprecated events.

Usage

"use strict";

const Subject = require('olvlvl-subject')

// create an event type
const MyEvent = Subject.createEvent(function (param1, param2) {

    this.param1 = param1
    this.param2 = param2

})

// create a constructor and mixin Subject prototype
function MySubject()
{

}

Object.assign(MySubject.prototype, Subject.prototype)

// instantiate a subject
const subject = new MySubject

// observe subject to notify MyEvent
subject.observe(MyEvent, ev => {

    console.log('MyEvent:', ev.param1, ev.param2)

})

// notify observers
subject.notify(new MyEvent(Math.random(), Math.random()))

Requirement

ECMAScript 6.

Installation

The recommended way to install the package in through npm:

$ npm install olvlvl-subjects --save

Cloning the repository

The package is available on GitHub, its repository can be cloned with the following command line:

$ git clone https://github.com/olvlvl/subject.git

Testing

The test suite is ran with the make test command.

License

olvlvl-subject is licensed under the New BSD License - See the LICENSE file for details.

About

Implements the subject/observer pattern with ECMAScript 6

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages