データを保存するオブジェクトを持つ。
var store = {
elements: [],
eventsEnabled: true,
addElement: function(element) {
this.elements.push(element);
if (this.eventsEnabled) {
// Code that triggers event, calls handlers... whatever
}
}
};
データを保存するという行為は、2つのイベント(2つのプロデューサーの種類)から発生します。最初の「プロデューサー」はイベントをトリガーしません。
setInterval(function() {
store.eventsEnabled = false;
store.addElement('hello');
store.eventsEnabled = true;
}, 12000);
2番目はイベントをトリガーします:
setInterval(function() {
store.addElement('bye');
}, 7000);
問題は、2番目のプロデューサーが最初のプロデューサーの実行フローを中断できるかどうかです。
つまり、プロデューサー1がイベントを無効にし、実行を終了する前(したがって、イベントが再び有効になる前)に、プロデューサー2が実行を開始して要素を追加した場合、イベントはトリガーされません。それは可能ですか?それは起こり得ますか?
もしそうなら、このコードを一種のスレッドセーフに変換するにはどうすればよいですか?