在javascript中,我可以锁定var吗?

时间:2017-05-10 13:31:53

标签: javascript

这是关于我的问题的场景。

我创建了一个var dataCache,它缓存了我从远程服务器获得的数据。我每30秒更新一次dataChache,就像这样,

setInterval(function(){
      instance.loadJsonFromRemote(configuration.dataUrl,function(data){
        instance.dataCache = data;
});
}, 30000);

和dataCache可能会在更新时同时被访问。

例如,

var cool = instance.dataCache.cool

上面的代码在数据更新代码运行时运行,

instance.dataCache = data;

我想可能的解决方案是在访问时锁定dataCache,如果没有人访问它,就可以设置它。

我可能需要像C#中的锁一样,但我真的不知道如何在JavaScript中执行它,或者它甚至不是JavaScript中的问题,因为JS是单线程的,它运行正常。我对JS不太熟悉。

1 个答案:

答案 0 :(得分:1)

没有锁定机制,因为javascript作为单线程执行。

来自多线程环境的人混淆的原因是javascript总是像“异步”一样工作。但事实并非如此。

当某些事件发生时,Javascript在内部使用“回调”,它将执行对Java / .Net开发人员来说有点棘手的回调。 Javascript总是在一个线程上运行,没有任何东西同时执行,它有“javascript执行周期”(See For Event Loop)可以说是一个简单的while(1){}代码在你的回调的每个循环中反复执行代码启动等等。

您的案例唯一可能的解决方案是来自setTimeout函数的回调,它将触发您的更新方案。