我有一个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中有“同步”的东西吗?
请帮助我,因为它将决定我们为实施此目标而采取的方法。
答案 0 :(得分:13)
JavaScript是单线程的(web-worker暂时搁置),没有任何事情发生异步(或者所有事情) - 所有代码:事件处理程序,超时,回调等 - 一个接一个地在同一个线程中运行。
因此,您不需要在JavaScript中进行任何同步。 JavaScript中的任何给定代码片段都保证只由一个线程执行。这有多酷?