我在这里找到了一个代码https://github.com/substack/stream-handbook 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>
Why?
第二个就是这些sleep 1
指示。如果我在没有它的情况下调用脚本
(echo abc; echo def; echo ghi) | node consume.js
它会打印
<Buffer 61 62 63>
<Buffer 0a 64 65>
不管我会用.read(0)
或不。我完全不明白这一点。这里用什么逻辑来打印这样的结果呢?