多个流的结束(循环内部的流)

时间:2016-01-15 20:13:12

标签: node.js events stream

我正在处理一个项目,我必须压缩几个目录,然后使用这些压缩文件来调用另一个函数。为此,我正在使用 https://github.com/npm/fstreamhttps://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值启动回调,其中最初调用事件监听器?

我很感激有任何关于解决这个问题的建议或其他想法。谢谢你提前。

1 个答案:

答案 0 :(得分:0)

关于第一个问题,请尝试收听fw.on('close')。看起来source可能会发出close而不是finish