【问题标题】:Node Pipes Handle Input节点管道处理输入
【发布时间】: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


【解决方案1】:

您可以在拨打download_images() 之前拨打read.pause(),然后在拨打cb() 之前拨打read.resume()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2012-09-02
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2016-02-02
    相关资源
    最近更新 更多