![](/img/trans.png)
[英]Javascript - How do I have a get/set in a method? (e.g. pineapple.is_a.fruit)
[英]Is race condition possible in Javascript? (e.g.: I want to get and set value atomically)
我做了很多搜索,但仍然无法弄清楚。
很简单,全局变量的初始值为false
;
var globalVar = false;
setTimeout
两次用于调用同一函数:
function(){
if(!globalVar){
globalVar = true;
alert('show only once');
}
}
那么alert
只被调用一次吗? 还是可能出现种族状况?
不在您的情况下。 Javascript在单线程环境中运行。 您的一个超时将在另一个超时之前完全执行,这意味着当另一个超时执行时,它将看到globalVar
为true
。
唯一可能发生的并发问题是等待IO,超时或类似情况。 在这一点上,其他的JavaScript被允许执行。 任何代码都不会中断其他代码来执行。
例如:
setTimeout(function () { alert('hi!'); }, 1000);
while(true) {}
您将永远不会看到警报,因为while循环将忙于等待,将javascript线程压缩为其他代码,并且永远不会给超时提供执行的机会。
JavaScript是单线程的,所以我认为这是不可能的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.