2013-02-20 47 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在您的瀏覽器中運行單線程。如果瀏覽器無事可做,該事件將被解僱。