2014-06-23 21 views
0

我需要在Web工作線程中更新我的javascript數組。 我無法在Web工作線程中加載我的javascript數組。如何在Web工作線程中使用JavaScript變量

我的代碼是:

self.onmessage = function(event) { 
var array = new Uint8Array(event.data); 
var sum = 0; 
var temparray = new Array(); 

for(var list = 0; list < array.length; list++){ 
    var temp = myMethod(array[list]); //some operation 
    availableArray.push(temp); 
} 

self.postMessage("success"); 
} 

我收到此錯誤: availableArrayis未定義 availableArray.push(臨時);

+0

看起來像你沒有聲明availableArray,有沒有'availableArrays = []'某處? – lelloman

+0

是的,我在一些其他已經在做某些操作的js文件中定義了availableArray。我需要從工作線程更新該數組。 – Prasath

回答

1

您可以定義2個變量是陣列(或陣列狀物體):var array = new Uint8Arrayvar temparray = new Array,但隨後在循環中,您使用不被任何聲明availableArray一個變量,我懷疑你想那個變量更改爲temparray
錯誤消息非常有意義:availableArray沒有在任何地方定義。您將它用作數組,並調用push方法。但是,默認情況下,JS在您使用未聲明的var時爲您創建一個新變量。非初始化變量的默認值當然是undefinedundefined沒有push方法,因此是錯誤。

但是,只是略有一點評論,雖然:在JS new Array實際上是沮喪。最好使用數組的文字符號:

var temparray = []; 

這是短安全。

+0

但我在其他js文件中定義了availableArray。我需要從我的工作線程更新該數組。這是可能更新一個數組或任何已經在做一些操作的變量? – Prasath

+0

@Prasath:工作人員不像C/C++中那樣是一個純粹的線程。它不共享狀態,但完全獨立於主JS線程。如果你想更新'availableArray',你必須發送一條消息到主JS進程,然後更新那裏的數據。 –

+0

好吧,我知道了。謝謝.. – Prasath

相關問題