스트림에서 3 바이트를 읽는 https://github.com/substack/stream-handbook 코드를 찾았습니다. 그리고 어떻게 작동하는지 이해할 수 없습니다.스트림 읽기 (0) 명령
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
없이 스크립트를 호출하는 경우는 상관없이 내가 .read(0)
여부를 사용할
<Buffer 61 62 63>
<Buffer 0a 64 65>
를 인쇄 할 수 있습니다. 나는 이것을 완전히 이해하지 못한다. 이러한 결과를 인쇄하기 위해 여기서 어떤 논리가 사용됩니까?