javascript - 将流返回自身如何与小号一起使用?

标签 javascript node.js

学习 node.js。显然,小号通过管道将流返回到自身来工作,因此可以输出处理后的数据。这对我来说毫无意义,因为它似乎就像将流的两端连接到自身一样。小号如何区分预处理和后处理数据?即,为什么 loud.pipe(...).pipe(loud) 不会导致某种形式的无限循环处理?

var trumpet = require('trumpet');
var through = require('through');
var tr = trumpet();

var loud = tr.select('.loud').createStream();
loud.pipe(through(function (buf) {
    this.queue(buf.toString().toUpperCase());
})).pipe(loud);

process.stdin.pipe(tr).pipe(process.stdout);

最佳答案

我也有同样的困惑:

davecocoa 在 github 上的 nodeschool.io 讨论线程中对我说。 以下是 https://github.com/nodeschool/discussions/issues/346 的摘录


我认为您可能混淆了 loudtr 两个流。

tr是主要的小号流

  • 它是一个转换流(具有像管道一样的输入和输出)
  • 以html为输入
  • 它输出html
  • 我们将 stdin 连接到它的输入,我们将它的输出连接到 stdout

我们通过要求 tr 选择具有大声类的 html 元素来创建 loud

  • 它是一个双工流(像电话一样有输入和输出)
  • 它输出或发送 html 元素
  • 它还接收 html 元素

tr 的行为是这样的,当 html 被流式传输到它时,如果有大声类的元素,它们将从 loud 输出,后者将它们发送到直通流您为使文本大写而构建,它将它们发送回 loud 的输入,在那里它们被重新插入到最初接收并从 tr 输出的 html tr .

我想需要注意的重要一点是,虽然 loudtr 有重要联系,但它们实际上根本没有通过管道连接在一起。


关于javascript - 将流返回自身如何与小号一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103981/

相关文章:

javascript - jQuery 外部 RSS 提要解析器?

javascript - SAPUI5 - Model.Remove 生成​​两个请求

javascript - 如何使用 jquery 在旧的之上添加更多边距?

mysql - 在单独的文件中定义 sequelize 关联

javascript - PHP Form Textarea Mysql 在按下 Enter 后添加 <br/>

javascript - Imperavi Redactor 内容未复制到隐藏文本区域

javascript - Nginx 和 Node.js 服务器 - 多个任务

javascript - 如何将带有链接的字符串解析为html链接

node.js - 将作业保存到 Node 中的议程时防止立即执行

javascript - Node.js - "Cannot find module ' module.js'“