如何使用nodejs的unzip2获得zip文件的条目列表

我正在使用unzip2模块https://github.com/glebdmitriew/node-unzip-2做zip文件stream解压缩,但获取zip条目,我有一个问题。

我的代码如下:

var fs = require('fs'); var entries = []; var srcStream = fs.createReadStream('test.zip'); srcStream.pipe(unzip.Parse()) .on('entry', function(entry) { entries.push(entry.path); entry.autodrain(); }) .on('finish', function() { console.log(entries); }); 

但是输出总是“[]”,看起来“完成”事件发生时,“进入”事件的操作没有完成。

有什么解决scheme,我可以得到所有的参赛名单?

使用“closures”事件而不是“完成”可以解决这个问题。

 var fs = require('fs'); var entries = []; var srcStream = fs.createReadStream('test.zip'); srcStream.pipe(unzip.Parse()) .on('entry', function(entry) { entries.push(entry.path); entry.autodrain(); }) .on('close', function() { console.log(entries); });