假设我有一个可以通过两个函数修改的变量:一个通过setTimeout
定期调用,另一个是事件处理程序:
var a = [];
function foo()
{
var x = a.pop();
// do something with x...
setTimeout(function(){ foo(); }, 1);
}
//...
someElement.addEventListener("keypress", function(e){ a.push("some value"); }, true);
这段代码安全吗?事件监听器和foo
是在同一个线程还是在不同的线程中运行?如果它们在不同的线程中运行,那么javascript运行时是否必须保证对a
的访问是同步的?