Javascript-concat()的行为类似于push()

时间:2018-11-17 12:58:37

标签: javascript node.js electron

我有多个字节数组,每个长度为10000000(10MB)。我将它们存储在该对象中

class object{
    var buffer = new Array();
    updateBuffer(buffer){
        this.buffer = this.buffer.concat(buffer);
    }
}

每当我收到一个新的字节数组(约15次)时,我都会调用该方法。我希望object.buffer.length的结果为〜150MB,但输出为15。如果我尝试执行类似object.buffer[0].lenght的操作,则输出为10MB,因此concat()的作用是push()。你知道为什么吗?

1 个答案:

答案 0 :(得分:0)

我认为您每次收到新包时都会创建object类的实例!因此,每次创建一个新对象,并因此创建一个新的buffer数组。

您必须在计时器(接收器)块之外创建object的实例,并在每包接收后使用它。


,请使用console(buffer)或其他方式检查console.log(buffer)参数。可能像[[byte1,b2,b3]]而不是[byte1,b2,b3],这导致length = 15。