UNPKG

@snipsonian/core

Version:

Core/base reusable javascript code snippets

31 lines (30 loc) 1.04 kB
export default function createObserverManager() { let counter = 0; const manager = { observers: [], }; const observerManager = manager; observerManager.registerObserver = ({ onNotify, onError }) => { counter += 1; const observer = { notify: onNotify, notifyError: onError, id: counter, }; observerManager.observers.push(observer); return observer; }; observerManager.notifyObservers = (notification) => { observerManager.observers.forEach((observer) => observer.notify(notification)); }; observerManager.notifyObserversOfError = (error) => { observerManager.observers.forEach((observer) => observer.notifyError(error)); }; observerManager.unRegisterObserver = (observer) => { const observerIndex = observerManager.observers.indexOf(observer); if (observerIndex > -1) { observerManager.observers.splice(observerIndex, 1); } }; return observerManager; }