A simple implementation of the observer pattern.
Homepage Repository npm Download
npm install gobserver@2.0.1
A simple implementation of the observer pattern.
es5 compliant browsers with a Map polyfill.
When using yarn:
yarn add gobserver
When using npm:
npm install gobserver
When using a script tag:
<script src="gobserver.js"></script>
When using TypeScript or es2015 modules:
import * as gobserver from "gobserver";
// or
import { create } from "gobserver";
When using CommonJS:
const gobserver = require("gobserver");
When using AMD:
define(["gobserver"], (gobserver) => {
// code goes here
})
When using JavaScipt:
const observer = gobserver.create();
When using TypeScript:
type Event = {
data: any
};
const observer = gobserver.create<Event>();
Subscribing:
type Event = {
data: any
};
const observer = gobserver.create<Event>();
const handler = (evt: Event) => {
console.log(evt.data);
}
observer.subscribe(handler);
Publishing:
observer.publish({ data: 12 });
Unsubscribing:
observer.unsubscribe(handler);
Pipe events from one observer to another:
type Event = {
data: any
};
const observer = gobserver.create<Event>();
const pipedObserver = gobserver.create<Event>();
pipedObserver.subscribe((evt: Event) => {
console.log(evt.data); // 12
});
observer.pipe(pipedObserver);
observer.publish({ data: 12 })
Unpipe both observers:
observer.unpipe(pipedObserver);
type Event = {
data: any
};
const observer = gobserver.create<Event>();
const pipedObserver = gobserver.create<Event>();
const handler = (evt: Event) => {
console.log(evt.data);
}
observer
.subscribe((evt: Event) => {
console.log(evt.data);
})
.subscribe(handler)
.pipe(pipedObserver)
.publish({ data: 12 });
This project is licensed under the MIT License - see the LICENSE.md file for details.