【问题标题】:How can chunks be allocated in a node.js stream in object mode all at once?如何在对象模式下一次在 node.js 流中分配块?
【发布时间】:2014-07-24 12:05:00
【问题描述】:

我可以看到缓冲区和字符串如何作为块发送,但我在考虑在对象模式下工作时如何处理流时遇到问题。

假设我有一个来自 http 请求消息的字节流。我想获取该消息,解析,然后将其转换为一个大对象。

我已经知道如何解析消息。我想知道的是消息是否很大所以它有很多块,但我想为输出创建一个对象如何确保数据事件等待整个事件?

这只是在分块数据发送完成之前不使用推送方法的问题吗?

这会将流数据输出限制为一个较小的对象,我认为我现在可以使用它。

作为附加条件,较大的数据将在转换后缩小。

【问题讨论】:

    标签: javascript node.js io stream


    【解决方案1】:

    如果您的转换流只输出一个对象,那么您所要做的只是push() 来自您的_flush() 实现的对象。

    【讨论】:

    • 实际上我刚刚了解到请求中的块是正文的长度,因此这可能是我所要求的解决方案。我假设一个请求可能有不止一个块。这是我遇到的问题。如果我想从我的转换中输出一个对象,我该如何处理来自请求的管道中的多个块?我还没有遇到这个问题,所以我不确定。
    • 也谢谢。我在想flush会是它,因为我读过它是在转换之后调用的。为了清楚起见,您可以在答案中添加一些内容吗?
    • 您可以缓冲多个块或在您的_transform() 中进行某种部分解析。您还应该使用_flush(),以防您在流的生命周期内收到多个块。 _flush() 在流上发出 'end' 之前被调用。
    • 谢谢。我会看同花顺的。
    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2019-10-23
    相关资源
    最近更新 更多