這是關於我的問題的場景。在javascript中,我可以鎖定一個var嗎?
我做了一個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;
我想的可能的解決辦法是,如果鎖數據高速緩存了,而正在被訪問它沒有一個訪問它,它可以被設置。
我可能需要類似於C#中的鎖定,但我真的不知道如何在JavaScript中做到這一點,或者它甚至不是JavaScript中的問題,因爲JS是單線程的並且工作正常。我對JS不是很熟悉。
「JS是單線程的,它工作正常」是的。你不需要鎖定var – R3tep
看看https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop。你是對的,不需要像鎖一樣的東西。 –
雖然也有這個:http://stackoverflow.com/questions/2734025/is-javascript-guaranteed-to-be-single-threaded我不知道你的情況可能會影響你多少。發佈它以防萬一。 –