Files
linumiq-shopify-theme/assets/pubsub.js
T
2026-08-24 21:41:12 +02:00

26 lines
598 B
JavaScript

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()
}
}