我正在处理一个项目,我必须压缩几个目录,然后使用这些压缩文件来调用另一个函数。为此,我正在使用 https://github.com/npm/fstream和https://github.com/npm/node-tar个库。
var fstreamR = require('fstream').Reader;
var fstreamW = require('fstream').Writer;
var tar = require('tar');
for (var comp in components){
// In order to build images from the Docker Api, the directory
// containing the Dockerfile and code must be compressed
// as tar.
var fr = fstreamR({'path':components[comp],'type':'directory'})
var fw = fstreamW({'path':'../../'+comp+'.tar'})
fr
.pipe(tar.Pack())
.pipe(fw)
fw.on('finish',function(){
//do something
})
}
所以 comp 在每次迭代中都会发生变化,我会创建一个新的tar文件。问题是我需要在调用使用它的函数之前完成tar。
我这里有两个问题。第一个:事件监听器对事件'finish'的回调永远不会被调用。
第二个:如果它可以正常工作,那么将针对与 for 迭代相对应的comp值启动回调,其中最初调用事件监听器?
我很感激有任何关于解决这个问题的建议或其他想法。谢谢你提前。