【发布时间】:2017-03-21 19:17:32
【问题描述】:
我正在将文本文件中的数据传输到另一个管道,该管道正在从某些 url 下载图像。现在正如预期的那样,这会快速连续发送大量请求,远程服务器将我关闭。我只想在处理第一个块之后处理下一个块。 我的代码是:
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 文件
- 延迟下载图片
【问题讨论】:
-
您可以尝试在拨打
download_images()之前拨打read.pause(),然后在拨打cb()之前拨打read.resume() -
@idbehold 这是我尝试的第一件事,它似乎没有用....我想我做了一些粗制滥造的谷歌搜索,因为我在 stackoverflow stackoverflow.com/questions/20145700/… 上找到了解决方案
-
@idbehold 是的,你是对的,我不得不使用 read.resume 和 read.pause。使用 async.queue 允许我并行发出多个请求。此问题现已解决,如果您愿意添加,我可以接受您的回答
标签: node.js asynchronous node-streams