9

我创建了一个 Javascript 对象,如下所示:

var ccStatTracker = (function (){
  ccmap:{
    "1":["1","2","3","4"],
    "2":["4","5"];       
  }

  return {
    modifyCCMap: function (){
      // Code which takes following actions: 
      // - adds/removes keys.
      // - modifies arrays stored as values against the keys in the map.  
    }  
  }
)();

我有一个 DHTMLXGrid 组件,它以行和列的形式显示网格。当我编辑网格中的任何单元格时,会调用“onEditCell”事件。现在,我想从附加到“onEditCell”事件的事件处理函数中调用 ccStatTracker.modifyCCMap()。当我继续修改单元格时,这个事件将被异步调用,这又会调用一个函数“modifyCCMap”,该函数将修改我的Javascript对象的私有成员“CCMap”。所以两个调用看到的我的 CCMap 的最新状态可能不同,对吧?那么处理这个问题的最佳方法是什么?Javascript 中是否有像 Java 中一样“同步”的东西?

请帮助我,因为它将确定我们要采取的实施方法。

4

1 回答 1

24

JavaScript 是单线程的(暂时不考虑异步发生的(或所有事情)——所有代码:事件处理程序、超时、回调等——一个接一个地在同一个线程中运行。

因此,您不需要在 JavaScript 中进行任何同步。JavaScript 中的任何给定代码都保证只能由单个线程执行。多么酷啊?

也可以看看

于 2012-06-09T11:20:13.970 回答