Nodejs解压缩zip的同步

我目前使用adm-zip将zip文件提取到某个path,但其extractAllTo方法是同步的。

有没有办法,我可以提取压缩文件asynchronous?

尝试在npm上使用async-unzip库: https ://www.npmjs.com/package/async-unzip

这在内存中运行,并且是100%asynchronous的,这会让你得到你想要的行为=)

这是一个例子:

 var async = require('async'), path = require('path'), ZipFile = require('async-unzip').ZipFile, zipFile = new ZipFile('/home/user/Name.app.dSYM.zip'), noMoreFiles = false; async.whilst(function () { return !noMoreFiles; }, function (cb) { async.waterfall([ function (cb) { zipFile.getNextEntry(cb); }, function (entry, cb) { if (entry) { if (entry.isFile) { var match = entry.filename.match(/^[^\/]+\.dSYM\/Contents\/Resources\/DWARF\/(.+)/); if (match) { console.log(match); console.log(entry); async.waterfall([ function (cb) { entry.getData(cb); }, function (data, cb) { // `data` is a binary data of the entry. console.log(data.length); cb(); } ], cb); } } } else { noMoreFiles = true; } cb(); } ], cb); }, function () { // DO NOT FORGET to call `close()` to release the open file descriptor, // otherwise, you will quickly run out of file descriptors. zipFile.close(); console.log(arguments); });