如何同步对 JavaScript 对象的私有成员的访问

How to synchronize access to private members of a javascript object

本文关键字:对象 访问 成员 JavaScript 何同步 同步      更新时间:2023-09-26

我创建了一个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中一样"同步"的东西?

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

JavaScript 是单线程的(暂时搁置 Web 工作者),没有异步发生任何事情(或与此相关的所有事情) - 所有代码:事件处理程序、超时、回调等 - 在一个线程中一个接一个地运行。

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

参见

  • JavaScript 相当于 SwingUtilities.invokeLater()
  • 异步 AJAX 回调的"原子"操作
  • 是否有任何原子JavaScript操作来处理Ajax的异步性质?
  • 异步编程(promises)是如何在JavaScript中实现的?JavaScript不是一个UI线程环境吗?