Node.js 节点管道处理输入
我正在将数据从一个文本文件传输到另一个管道,该管道正在从一些URL下载图像。现在,正如预期的那样,这会连续快速发送大量请求,远程服务器会关闭我。我只想在处理第一个块之后处理下一个块。 我的代码是:Node.js 节点管道处理输入,node.js,asynchronous,node-streams,Node.js,Asynchronous,Node Streams,我正在将数据从一个文本文件传输到另一个管道,该管道正在从一些URL下载图像。现在,正如预期的那样,这会连续快速发送大量请求,远程服务器会关闭我。我只想在处理第一个块之后处理下一个块。 我的代码是: read.pipe(JSONStream.parse('*')) .pipe(es.map(function (d, cb) { download_images(x,y) .then(function(r) ...) .fail(function(r) ...)
read.pipe(JSONStream.parse('*'))
.pipe(es.map(function (d, cb) {
download_images(x,y)
.then(function(r) ...)
.fail(function(r) ...)
.fin(function(f) cb())
})
.pipe(xyz)
由于我刚刚开始研究流,我可能错过了一个非常简单的要点,或者在我对使用流的热情中,我可能忽略了一个更好的方法
- 超大json文件
- 延迟下载图像
下载图片()
之前调用read.pause()
,然后在调用cb()
之前调用read.resume()
您可以在调用下载图片()
之前尝试调用read.pause()
然后调用read.resume())
就在你调用cb()
@idbehold之前,这是我尝试的第一件事,它似乎不起作用……我想我做了一些劣质的谷歌搜索,因为我在stackoverflow@idbehold上找到了解决方案。是的,你是对的,我必须使用read.resume和read.pause。使用async.queue允许我并行发出多个请求。这个问题现在已经解决了,如果你愿意补充的话,我可以接受你的回答