Javascript 通过管道将HTTP响应流传输到另一个可读流
如何用另一个可读流中的数据填充可读流 我的用例有点奇怪,我有一个函数,它使用Javascript 通过管道将HTTP响应流传输到另一个可读流,javascript,node.js,stream,Javascript,Node.js,Stream,如何用另一个可读流中的数据填充可读流 我的用例有点奇怪,我有一个函数,它使用fs.createReadStream从磁盘读取文件并返回该流。现在我想为函数创建一个变体,该函数通过HTTP加载文件,但仍然返回一个读取流,以便客户端可以平等地对待这两个函数 我想做的最简单的版本是这样的 var makeStream = function(url) { var stream = require('stream'); var rs = new stream.Readable(); var
fs.createReadStream
从磁盘读取文件并返回该流。现在我想为函数创建一个变体,该函数通过HTTP加载文件,但仍然返回一个读取流,以便客户端可以平等地对待这两个函数
我想做的最简单的版本是这样的
var makeStream = function(url) {
var stream = require('stream');
var rs = new stream.Readable();
var request = http.get(url, function(result) {
// What goes here?
});
return rs;
};
我基本上想要的是一种返回HTTP结果流的方法,但是因为它隐藏在回调中,所以我不能
我觉得我遗漏了一些非常明显的东西,那是什么?在回调中使用管道并同时同步返回流是可以的
var makeStream = function(url) {
var stream = require('stream')
var rs = new stream.PassThrough()
var request = http.get(url, function(res) {
res.pipe(rs)
})
return rs
}
请注意,您尝试使用可读流,但它对此不起作用。您需要改用
stream.PassThrough
。可以在回调中使用管道,同时同步返回流
var makeStream = function(url) {
var stream = require('stream')
var rs = new stream.PassThrough()
var request = http.get(url, function(res) {
res.pipe(rs)
})
return rs
}
请注意,您尝试使用可读流,但它对此不起作用。您需要使用
stream.PassThrough
来代替。Ha,我就知道这会很简单。谢谢,我就知道事情会这么简单。谢谢