redux-restate
Version:
<div align="center"> <h1>redux-restate</h1> <br/> <img src="https://cdn.rawgit.com/theKashey/restate/1d67d86d/images/logo.svg" alt="restate" width="600" align="center"> <br/> <br/> Restate base layer. <br/> <br/> <a href="https://circlec
36 lines (27 loc) • 715 B
JavaScript
const createSubscription = () => {
const nextListeners = [];
return {
trigger() {
const listeners = nextListeners;
for (let i = 0; i < listeners.length; i++) {
listeners[i]();
}
},
subscribe(listener) {
if (typeof listener !== 'function') {
throw new Error('Expected listener to be a function.');
}
let isSubscribed = true;
nextListeners.push(listener);
return function unsubscribe() {
if (!isSubscribed) {
return;
}
isSubscribed = false;
const index = nextListeners.indexOf(listener);
nextListeners.splice(index, 1);
};
},
};
};
export default createSubscription;