我有多个字节数组,每个长度为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()
。你知道为什么吗?
答案 0 :(得分:0)
我认为您每次收到新包时都会创建object
类的实例!因此,每次创建一个新对象,并因此创建一个新的buffer
数组。
您必须在计时器(接收器)块之外创建object
的实例,并在每包接收后使用它。
也,请使用console(buffer
)或其他方式检查console.log(buffer)
参数。可能像[[byte1,b2,b3]]
而不是[byte1,b2,b3]
,这导致length = 15。