2015-08-14 42 views
0

有没有一种方法来复制或发球的Node.js可读流,使这些流可以独立于相同的来源消耗?Node.js可读流如何独立复制和使用?

我的使用情况看起来是这样的:

f(inputStream, callback(err, data) { 
    // do stuff with data to change how g behaves 
    g(inputStream); 
}); 

的要求是:fg开始从流的开始阅读。我通常在这里使用readable.pipe,但g需要在回调中发生。

+0

什么样流的是'inputStream'? – thefourtheye

+0

这是一个可读的流,但在我的实际使用情况下,它是一个分段上传。 –

+0

如果'f()'完全消耗流,则可以使用['streamifier'](https://github.com/gagle/node-streamifier)创建一个新的可读流传递给'g()'。 – robertklep

回答

0

您可以将相同的可读流传递给f和g。他们将从彼此独立的流中读取。

例如: -

var fs = require('fs'); 
 
var str = fs.createReadStream('<file location>'); 
 

 

 
function f(s) { 
 
s.on('data', function (d) { 
 
     console.log(d.toString()); 
 
}); 
 
s.on('end', function() { 
 
     console.log('ended'); 
 
}); 
 
} 
 
function g(s) { 
 
s.on('data', function (d) { 
 
     console.log(d.toString()); 
 
}); 
 
s.on('end', function() { 
 
     console.log('ended'); 
 
}); 
 
} 
 

 
g(str); 
 
f(str);