问题标签 [node-streams]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何将事件发送到 gulp-tap 的父流中
我正在设置一个 gulpfile,用于在开发过程中将多个 JavaScript 文件捆绑到多个包中。
由于我想观看此过程并且如果其中一个文件中存在错误(语法或其他东西)不让它退出,我需要正确地end
向父流发出事件。
为了处理多个文件,我使用了 gulp recipes 中描述的方法。
但是使用它并阅读gulp-tap 上的文档我不确定如何让它将错误发送到父流中。
我想做的是以下几点:
如果我将回调传递给bundle()
调用,我可以看到错误,但我不知道如何将它返回到父流中。
node.js - 读取文件时出错。超出最大调用堆栈大小,同时尝试在流中创建带有猫鼬的项目
我正在尝试写入 DB,同时从流中的大 CSV 文件读取,但我得到的只是“超出最大调用堆栈大小”错误。并且总是在 12969 行之后。如果我不保存到数据库,一切正常。我的代码示例:
javascript - 具有节点流功能的 Meteor.bindEnvironment 失去上下文
在使用 Meteor.bindEnvironment 调用 Meteor 方法来创建新的 Fiber 时,数据上下文不再可用。插入 ID 返回未定义。
我曾尝试使用 Meteor.bindAsync,因为我认为我会有一个新的 Fiber 和原始数据上下文,但我仍然收到 Meteor 必须在 Fiber 中运行的错误。插入完成后,如何将 newID 绑定到原始数据上下文以将其传回?
javascript - Node.js Stream Transform 是否保持块的顺序?
我看到 Node.js Stream API 中的 Transform Streams 使用异步函数在块到达时对其进行转换: https ://nodejs.org/api/stream.html#stream_transform_transform_chunk_encoding_callback
Transform 流是否按照它们到达的顺序发送块?因为对于异步函数,情况并非如此。
node.js - 考虑背压,将数据从 Cassandra 流式传输到文件
我有收集投票提交并将它们存储在 Cassandra 中的 Node 应用程序。投票存储为 base64 编码的加密字符串。API 有一个名为的端点/export
,它应该获取所有这些投票字符串(可能 > 100 万),将它们转换为二进制文件并将它们一个接一个地附加到 votes.egd 文件中。然后应该压缩该文件并将其发送给客户端。我的想法是从 Cassandra 流式传输行,将每个投票字符串转换为二进制文件并写入WriteStream
. 我想将此功能包装在 Promise 中以便于使用。我有以下内容:
当我运行它时,它会将所有投票附加到文件并下载正常。但是我有很多问题/疑问:
如果我向
/export
端点发出请求并且此函数运行,则在它运行时对应用程序的所有其他请求都非常慢,或者只是在导出请求完成之前没有完成。我猜是因为事件循环被 Cassandra 流中的所有这些事件占用(每秒数千个)?所有的投票似乎都很好地写入了文件,但我
false
几乎每次writeStream.write()
通话都会收到相应的记录消息(见代码)?我知道我需要考虑 WritableStream 的背压和“排水”事件,所以理想情况下我会使用
pipe()
投票并将其传送到一个文件,因为它内置了背压支持(对吗?)但是因为我需要处理每一行(转换到二进制并可能在将来添加来自其他行字段的其他数据),我将如何用管道做到这一点?
node.js - 节点管道处理输入
我正在将文本文件中的数据传输到另一个管道,该管道正在从某些 url 下载图像。现在正如预期的那样,这会快速连续发送大量请求,远程服务器将我关闭。我只想在处理第一个块之后处理下一个块。我的代码是:
由于我刚刚开始研究流,我可能错过了一个非常简单的点,或者我热衷于使用流,我可能忽略了更好的方法
- 非常大的 json 文件
- 延迟下载图像
javascript - 如何制作“同步”nodejs转换流?
目前,我正在使用一个名为“ChunkingStream”的转换流来接收和处理来自 TCP 套接字(并通过管道传输到其他地方)的数据。一般结构与nodejs doc中给出的示例几乎相同:
然而,由于数据块的顺序在这个问题中很重要,它看起来像这样的调用:
是异步的。
因此有什么方法可以使上述调用同步吗?干杯!
node.js - 节点流 - 在可读流中监听 unpipe
因此,我创建了一个读取流,它首先连接到 SFTP 并开始从文件中读取。在任何时候,我的代码都可以解除该 readstream 的管道并执行其他操作。例如,我可能会使用它来获取 CSV 的前几行并停止阅读。
问题是,我不知道如何unpipe
在我的 readStream 构造函数中监听事件,以便我可以正确关闭 SFTP 连接。我flush
在写入流中使用了一种方法,对于读取流有类似的方法吗?
这是我的 readStream 构造函数的简化部分:
稍后我可能会打电话给myStream.pipe(writeStream)
然后myStream.unpipe()
。但因为我无法监听该unpipe
事件,读取停止,但 SFTP 连接保持打开状态并最终超时。
有任何想法吗?
javascript - 如何使用对象列表作为 gulp 源流
我知道 gulp 需要乙烯基源流才能正常工作,但是有没有一种简单的方法可以使用已经存在的乙烯基文件或 json 对象,而不是众所周知的只需要 glob 的 gulp.src?