gpt4 book ai didi

javascript - Node.js 动态扩展管道流

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:33 26 4
gpt4 key购买 nike

我想对 Node.js 系统进行基准测试。

因此,我创建了一个可以加密和压缩文件的小程序(我希望该应用程序是 CPU 密集型的)。我认为多次重复加密过程是有意义的。但是每当我动态地通过管道传输流时,程序都会在完成之前退出。有没有办法让我等到流结束?

我的代码如下所示:

            var readStream = fstream.Reader(sourcePath);
var writeStream = fs.createWriteStream(sourcePath + '.tar.gz');

var stream = readStream.on('error', function (e) {
handleError(e, errorMessageReadFile);
})
.pipe(tar.Pack()).on('error', function (e) {
handleError(e, errorMessageTarPack);
});

for (i = 0; i < algorithmCount; i++) {
stream = stream.pipe(encryptStream).on('error', function (e) {
handleError(e, errorMessageEncrypt);
});
console.log("enc");
}

stream.pipe(gzip).on('error', function (e) {
handleError(e, errorMessageCompress);
})
.pipe(writeStream).on('error', function (e) {
handleError(e, errorMessageWriteFile);
})
.on('finish', function () {
console.log('done');
});

最佳答案

这可能是一个问题:

for (i = 0; i < algorithmCount; i++) {
stream = stream.pipe(encryptStream);
}

请记住.pipe returns the stream you're piping into 。换句话说:stream.pipe(encryptStream) 返回 encryptStream。第一次迭代很好:stream 最初是 tar.Pack() 流,因此它通过管道传输到 encryptStream 中。但是,第二次迭代会将现在等于 encryptStreamstream 传输到其自身中。

您可能希望为每次迭代创建一个中间加密流,例如像这样:

for (i = 0; i < algorithmCount; i++) {
stream = stream.pipe(createEncryptStream());
}

关于javascript - Node.js 动态扩展管道流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38624252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com