如何在Web worker线程中使用javascript变量

时间:2014-06-23 10:25:50

标签: javascript multithreading worker-thread

我需要在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 undefined availableArray.push(温度);

1 个答案:

答案 0 :(得分:1)

您定义了2个变量,这些变量是数组(或类似于数组的对象):var array = new Uint8Arrayvar temparray = new Array,但是在循环中您使用的是未在任何地方声明的变量availableArray ,我怀疑你想把这个变量改为temparray 错误消息非常有意义:availableArray未在任何地方定义。您将它用作数组,并在其上调用push方法。但是,默认情况下,只要您使用尚未声明的var,JS就会为您创建一个新变量。当然,非初始化变量的默认值为undefinedundefined没有push方法,因此错误。

但是,只是略微说一句:在JS new Array中实际上是不鼓励的。最好使用数组文字表示法:

var temparray = [];

它更短更安全。