有效地在Javascript或node.js中更改数组的大小

时间:2014-01-08 19:54:26

标签: javascript arrays node.js

在我的node.js代码中,每次通过作为TCP客户端的node.js和另一个TCP服务器之间的TCP连接接收图像时,都有一个缓存数组,我存储接收到的图像的内容:

var byBMP = new Buffer (imageSize);

然而 图像的大小,imageSize,每次都不同,这使得byBMP的大小相应地改变。这意味着这样的事情不断发生:

 var byBMP = new Buffer (10000);
.... wait to receive another image
 byBMP = new Buffer (30000);
.... wait to receive another image
 byBMP = new Buffer (10000);
... etc

问题:

是否有更有效的方法可以通过BP调整数组大小。我调查了这个:How to empty an array in JavaScript?给了我一些想法,以便有效地清空一个数组,但是为了调整它,我需要你们的评论.node.js

1 个答案:

答案 0 :(得分:1)

有效的方法是使用Streams而不是缓冲区。缓冲区会将图像内容保留在内存中,但内容不是很容易扩展。

相反,只需将下载流直接传输到文件输出:

imgDownloadStream.pipe( fs.createWriteStream('tmp-img') );

如果你要将img保留在内存中以执行转换,那么只需在流缓冲器部分通过时应用转换。