Tag: thread safety

JavaScript函数执行可以被中断吗?

有一个对象来存储数据。 var store = { elements: [], eventsEnabled: true, addElement: function(element) { this.elements.push(element); if (this.eventsEnabled) { // Code that triggers event, calls handlers… whatever } } }; 存储数据的行为来自两个事件(两种生产者)。 第一个“生产者”不会触发任何事件: setInterval(function() { store.eventsEnabled = false; store.addElement(‘hello’); store.eventsEnabled = true; }, 12000); 秒确实触发事件: setInterval(function() { store.addElement(‘bye’); }, 7000); 问题是,第二个生产者可以打破第一个生产者的执行流程吗? 我的意思是,如果生产者1禁用事件,并且在完成执行之前(因此在再次启用事件之前),生产者2开始执行并添加其元素,则不会触发任何事件。 那可能吗? 这会发生吗? 如果是这样,如何将此代码转换为线程安全的?