JSFiddle - React, Tailwind, and code Playground
JavaScript
function Observer() {
var subscribers = [];
return {
subscribe: function (subscriber) {
subscribers.push(subscriber);
},
publish: function (publication) {
for (var i = 0, len = subscribers.length; i < len; i++) {setTimeout(function(sub,pub){sub.call(undefined,pub);},0,subscribers[i],publication);
}
}
};
}
var observer = new Observer;
observer.subscribe(function(){alert("wow");});
observer.subscribe(function untrusted(){
this[0] = untrusted;
this.length = 1;
alert("whoa");
});
observer.publish(); // both event handlers executed
observer.publish(); // both event handlers executed