Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过管道将HTTP响应流传输到另一个可读流_Javascript_Node.js_Stream - Fatal编程技术网

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,我就知道这会很简单。谢谢,我就知道事情会这么简单。谢谢