【发布时间】:2014-11-04 07:06:37
【问题描述】:
我在这里找到了一个代码https://github.com/substack/stream-handbook,它从流中读取 3 个字节。而且我不明白它是如何工作的。
process.stdin.on('readable', function() {
var buf = process.stdin.read(3);
console.log(buf);
process.stdin.read(0);
});
这样称呼:
(echo abc; sleep 1; echo def; sleep 1; echo ghi) | node consume.js
返回:
<Buffer 61 62 63>
<Buffer 0a 64 65>
<Buffer 66 0a 67>
<Buffer 68 69 0a>
首先,我为什么需要这个.read(0) 东西?在我通过.read(size) 请求之前,流不是有一个缓冲区来存储其余数据吗?但是没有.read(0),它会打印出来
<Buffer 61 62 63>
<Buffer 0a 64 65>
<Buffer 66 0a 67>
为什么?
第二个是这些sleep 1 指令。如果我在没有它的情况下调用脚本
(echo abc; echo def; echo ghi) | node consume.js
它会打印出来
<Buffer 61 62 63>
<Buffer 0a 64 65>
无论我是否使用.read(0)。我完全不明白这一点。这里用什么逻辑来打印这样的结果?
【问题讨论】: