我正在尝试使用解压缩节点模块来提取和处理许多文件(确切数目未知)。但是,我似乎无法弄清楚如何知道何时处理所有文件。到目前为止,我的代码如下:
[1]
我正在尝试弄清如何知道解压缩已遍历所有文件(即不再发生s3.getObject(params).createReadStream()
.pipe(unzipper.Parse())
.on('entry', async (entry) => {
var fileName = entry.path;
if (fileName.match(someRegex)) {
await processEntry(entry);
console.log("Uploaded");
} else {
entry.autodrain();
console.log("Drained");
}
});
事件)和所有entry
处理程序已经完成,所以我知道我已经处理完所有我关心的文件。
我曾尝试对entry
和close
事件进行试验,但是当我遇到这些事件时,它们都在finish
打印之前触发,因此似乎不正确。
帮助?
答案 0 :(得分:0)
解析器像其他任何流一样发出
finish
和error
事件。解析器还为这两个事件提供了一个Promise包装,以便轻松折叠到现有的基于Promise的结构中。示例:
fs.createReadStream('path/to/archive.zip') .pipe(unzipper.Parse()) .on('entry', entry => entry.autodrain()) .promise() .then( () => console.log('done'), e => console.log('error',e));