vue-hooks-plus
Version:
Vue hooks library
30 lines (29 loc) • 629 B
JavaScript
const listeners = {};
const otherListeners = [];
const trigger = (key, data) => {
if (listeners[key]) {
listeners[key].forEach((item) => item(data));
otherListeners.forEach((item) => item({
type: key,
data
}));
}
};
const subscribe = (key, listener) => {
if (!listeners[key]) {
listeners[key] = [];
}
listeners[key].push(listener);
return function unsubscribe() {
const index = listeners[key].indexOf(listener);
listeners[key].splice(index, 1);
};
};
const otherSubscribe = (listener) => {
otherListeners.push(listener);
};
export {
otherSubscribe,
subscribe,
trigger
};