這個問題實際上已經被Brad問到了,但是我還沒有發現真正的問題。必須在readable.read()
以內可讀的事件處理程序被重複調用?在當前節點文檔中,示例代碼讀取爲:Node.js流repeat.read重複調用
var readable = getReadableStreamSomehow();
readable.on('readable', function() {
var chunk;
while (null !== (chunk = readable.read())) {
console.log('got %d bytes of data', chunk.length);
}
});
readable.read()
被重複調用。
該文件說,這大約可讀事件:
一旦內部緩衝器排空,當更多的數據是可用的可讀事件將再次觸發。
它還說,這大約read()
:
如果不指定大小參數,則它會在內部緩衝區返回的所有數據。
那麼是否有任何情況下,把它放在一個while循環重複調用read()
必要?
然後在文檔中的示例站立正確,我猜。 – huggie
根據當時預期版本v.10(https://dl.dropboxusercontent.com/u/3685/presentations/streams2/streams2-ko.pdf)之前的討論,返回null是規範的一部分。 ,可讀的事件只有在它返回null後纔會被觸發。也許這就是爲什麼文檔使用while循環。也許這就是爲什麼它有必要嗎?因爲如果你沒有閱讀,直到它是空的,那麼它還沒有返回null。 – huggie
無論如何,文檔肯定不會反映null必須由另一個可讀事件之前的readable.read()返回,只是緩衝區爲空。 – huggie