Having an object to store data.
var store = {
elements: [],
eventsEnabled: true,
addElement: function(element) {
this.elements.push(element);
if (this.eventsEnabled) {
// Code that triggers event, calls handlers... whatever
}
}
};
The act of storing data comes from two events (kind of two producers). First "producer" does not trigger any event:
setInterval(function() {
store.eventsEnabled = false;
store.addElement('hello');
store.eventsEnabled = true;
}, 12000);
Second does trigger events:
setInterval(function() {
store.addElement('bye');
}, 7000);
The question is, can the second producer break execution flow of first producer?
I mean, if producer 1 disables events and, before finishing execution (and therefore before events are enabled again), producer 2 starts its execution and adds its element, then no events will be triggered. Is that possible? Can that happen?
If so, how can this code be converted to be kind-of thread-safe?