理解Async Javascript代码
Understanding Async Javascript code
最近,我开始通过nodesschool练习学习Node.js。但是我对理解这个问题的解决方案有问题:
Your program will get some html written to stdin. Convert all the inner html to
upper-case for elements with a class name of "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);
我不明白的是这部分:
process.stdin.pipe(tr).pipe(process.stdout);
此代码没有使用loud变量来输出解决方案。谁能解释一下这个神奇的密码?
p。S:我是从PHP开始学习Node.js的,在理解Async Javascript方面有一些问题。
我也有类似的困惑,这次讨论帮我解决了这个问题。
我想你可能混淆了两个流loud
和tr
。
tr
为主要喇叭流
- 是一个转换流(像管道一样有输入和输出)
- 它接受html作为输入
- 输出html
- 将
stdin
连接到其输入端,将其输出端连接到stdout
loud
是另一个流,我们通过要求tr
选择具有loud
类的html元素来创建loud
- 它是一个双工流(像电话一样有输入和输出)
- 输出或发送html元素
- 它也接收html元素
tr
的行为是这样的,当html流到它时,如果有类loud
的元素,它们是loud的输出,它将它们发送到您为使文本大写而构建的through
流,它将它们发送回loud
的输入,在那里它们被重新插入到tr
最初接收的html中,并从tr
输出。
我想需要注意的一件重要的事情是,尽管loud
与tr
有重要的连接,但它们实际上根本没有连接在一起。
虽然tr
和loud
是绝对连接的,但连接并不那么清楚,它与我们在这里看到的管道无关。
您确实想将html发送回tr
,但我们通过将其发送回loud
来实现这一点。任何发送到tr
输入部分的内容都会被解释为需要处理的新html,所以我们不能发送到tr
的输入部分。相反,我们将其发送到loud
的输入,通过一些神奇的内部喇叭,使其从tr
输出。
分开考虑流可能会有帮助:
-
stdin
>tr
(进行某种处理)>stdout
-
loud
>through
>loud
因此,虽然tr
和loud
都是双工流,这意味着它们都有输入和输出,但它们的行为方式非常不同。
tr
接收一个输入,然后将输出作为结果。
loud
发送一个输出,并等待输入作为结果到达。
如果你愿意,你可以把loud
想象成两个流,一个读,一个写,而不是一个读/写流。这使得它看起来更像stdin
和stdout
。
loudout
> through
> loudin
loud
绝对知道当它接收到输入时,它应该把它传递回tr,这恰好是小号的内部,使它有点神秘
- 云代码(javascript)失败,原因是:{代码:1,消息:内部错误
- 简化此If语句,使其不会't重复代码-Javascript
- 十进制到二进制代码Javascript
- 第二次单击时执行不同的代码(JavaScript)
- 在不使用jquery($symbol)knockout.js的情况下分离代码javascript
- 缩短几个元素的onclick代码 - JavaScript
- 英国银行排序代码 JavaScript 正则表达式
- 我无法在谷歌图表的代码 javascript 中获取 json 数据(项目 Python Hello Dashboard
- 和代码 JavaScript 没有被 &.
- 我怎样才能减少这段代码 javascript 代码,这样它就不会那么重复了
- 我想单击一个按钮,一次只执行已经制作的程序中的一行代码.(JavaScript)
- 滑动 DIV 代码 Javascript 的小问题
- 尝试重写代码 JavaScript
- 是否可以检测到在不使用键代码 javascript 的情况下按下了输入键
- 输入网址代码 JavaScript 播放器
- 管理通用客户端代码(javascript/css)
- 理解代码javascript
- 加载json-url参数代码(javascript修改)
- 变量检查错误的代码(javascript)
- css属性仅由代码javascript应用