2013-02-20 50 views
0
var globalArray = []; 

此回调被炒鱿鱼高达100次,每次在我处理的项目列表中的程序的第二JavaScript数组竞争条件/线程问题?

function EventCallback(param) { 

globalArray.push(param); 

} 

主要部分。

如果在这里修改数组时触发回调会发生什么?

while(globalArray.length > 0) 
{ 

ProcessListItem(globalArray.shift()); 

} 

我遇到的问题是,火狐SpiderMonkey的JavaScript引擎有时烦了(种族条件/线程问题?),并告诉我,globalArray.push不是一个函数或其他奇怪的错误。

我想要实现的是将回调添加到列表中,以便稍后处理它们。有没有更好的方法来编码?我是新来的,所以任何建议表示赞赏。谢谢

+0

由于JavaScript是单线程的,因此您的回调无法在'while循环中触发。 – 2013-02-20 18:07:05

回答

4

它不会发生,因为JavaScript在您的浏览器中运行单线程。如果浏览器无事可做,该事件将被解雇。