我在网上查看express相关资料的时候,看到了下面这样的代码(我做了稍微改动,但是原理和关键内容没有变)这段代码个人没看太懂,大致应该是基于流来实现输出。但还是不太懂另外在chrome中运行,一直是加载中,并没有结果。在ff中,加载一段时间后取消加载(点击url输入框旁边的叉),可以在控制台看到如下内容(不显示在网页上):我对整个过程表示非常的疑惑,希望有相关经验的朋友能指点一二,或者解释一些内容和浏览器这种情况是什么意思..谢谢
1 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
基础知识。
Node.js的util模块和Stream模块,http模块和express框架。
解答3个注释。
<co id="callout-streams-express-1" />那一行。util.inherits(A, B)是Node.js原生util模块的继承方法,实现A继承B,并且结合下两行B.call(A)使用更好;
<co id="callout-streams-express-2" />那一行。util.inspect(Object)是Node.js原生util模块的对象转字符串的方法,基本等价于JSON.stringify();
<co id="callout-streams-express-3" />那一行。是使用Stream模块的管道方法,从读取流直接传输到写入流;
解决问题。
chrome一直运行中,是因为pipe()管道方法无法判断读取流已经写入完毕,http链接无法结束,也就没办法加载。需要在代码中pipe(null)显式指定读取流读取结束,然后写入流才会知道写入结束。
if (this.limit === 0) { // Done
this.push(null);
}最后安利一本书《Node.js硬实战》。
soonfy
添加回答
举报
0/150
提交
取消
