Skip to content

Instantly share code, notes, and snippets.

View Yamo93's full-sized avatar

Yamo Gebrewold Yamo93

  • IKEA
  • Malmö, Sweden
View GitHub Profile
@Yamo93
Yamo93 / pseudo_pub_sub.js
Created October 31, 2020 21:59
Pseudo code for pub-sub pattern
const subscribers = {
onUserUpdate: [callbackFunction, anotherCallbackFunction],
onUserLogin: [callbackFunction, anotherCallbackFunction]
};
@Yamo93
Yamo93 / extended_subscribe.js
Created October 31, 2020 21:53
Extended subscribe with unsubscribe return value
function subscribe(eventName, callback) {
if (!Array.isArray(subscribers[eventName])) {
subscribers[eventName] = []
}
subscribers[eventName].push(callback);
const index = subscribers[eventName].length - 1;
return () => {
subscribers[eventName].splice(index, 1);
}
}
@Yamo93
Yamo93 / simple_unsubscribe.js
Created October 31, 2020 21:52
Simple unsubscribe method
function unsubscribe(eventName) {
delete subscribers[eventName];
}
@Yamo93
Yamo93 / publish_subscribe.js
Created October 31, 2020 21:51
Publish subscribe factory function
function publishSubscribe() {
const subscribers = {};
function subscribe(eventName, callback) {
if (!Array.isArray(subscribers[eventName])) {
subscribers[eventName] = [];
}
subscribers[eventName].push(callback);
}
function publish(eventName, data) {
if (!Array.isArray(subscribers[eventName])) {
@Yamo93
Yamo93 / publish_method.js
Created October 31, 2020 21:50
Publish method
function publish(eventName, data) {
if (!Array.isArray(subscribers[eventName])) {
return;
}
subscribers[eventName].forEach(callback => {
if (typeof callback === 'function') {
callback(data);
}
})
}
@Yamo93
Yamo93 / subscribe_method.js
Created October 31, 2020 21:48
Subscribe method
function subscribe(eventName, callback) {
if (!Array.isArray(subscribers[eventName])) {
subscribers[eventName] = [];
}
subscribers[eventName].push(callback);
}