initial commit
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
let subscribers = {};
|
||||
|
||||
function subscribe(eventName, callback) {
|
||||
if (subscribers[eventName] === undefined) {
|
||||
subscribers[eventName] = [];
|
||||
}
|
||||
|
||||
subscribers[eventName] = [...subscribers[eventName], callback];
|
||||
|
||||
return function unsubscribe() {
|
||||
subscribers[eventName] = subscribers[eventName].filter((cb) => {
|
||||
return cb !== callback;
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
function publish(eventName, data) {
|
||||
if (subscribers[eventName]) {
|
||||
const promises = subscribers[eventName]
|
||||
.map((callback) => callback(data))
|
||||
return Promise.all(promises);
|
||||
} else {
|
||||
return Promise.resolve()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user