读取ReadableStream并指定大小参数:为什么state.highWaterMark总是被传递到_read()作
Reading a a ReadableStream and specifying a size param: Why does state.highWaterMark always get passed to ._read() as the size?
在Node.js中,我有一个可读流:
var rs = new (require('stream').Readable);
rs._read = function(size) {
// Implementation.
}
此流在此HTTP服务器实例中读取:
var http = require('http');
var server = http.createServer(function(req, res) {
var size = require('url').parse(req.url, true).query.size;
if (size) {
rs.pipe(res);
rs.read(parseInt(size));
}
res.end('');
});
server.listen(3001, function() {
console.log('Listening on 3001');
});
现在,当I curl localhost:3001/?size=n
,其中n是任何整数时,rs._read(size)
中的size
总是16384!这个数字是流的state.highWaterMark
的默认值,因为rs._read()
在lib/_stream_readable.js
中被称为this._read(state.highWaterMark);
。有人能解释一下吗?如果不使用size
参数,它有什么意义?
谢谢。
看起来这只是流的highWaterMark
,而并非巧合是默认的size
。点击此处阅读更多
var stream = require("stream");
var rs = new stream.Readable();
{ _readableState:
{ highWaterMark: 16384,
buffer: [],
length: 0,
pipes: null,
pipesCount: 0,
flowing: false,
ended: false,
endEmitted: false,
reading: false,
calledRead: false,
sync: true,
needReadable: false,
emittedReadable: false,
readableListening: false,
objectMode: false,
defaultEncoding: 'utf8',
ranOut: false,
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null },
readable: true,
domain: null,
_events: {},
_maxListeners: 10 }
我认为调用是错误的
rs.read(size).pipe(res);
这是因为根据文档,rs.read(size)
返回一个缓冲区、一个字符串或null
。然而,pipe()
是Readable
的一种方法。你可能应该使用
rs.pipe(res);
rs.read(size);
相关文章:
- nodejs does not read JSON
- jquery ajax post to .aspx page load - how to read variable p
- JSonStore Error with d.read
- websocket javascript read write
- javascript firstChild, nextSibling read-only
- Read an MVC @Html.TextBoxFor from Javascript
- Jquery read xml block
- read完全没有用Java Nashorn Javascript引擎定义
- php doesnt read jquery indexOf?
- Intel Edison: MRAA javascript i2c.read() 将结果存储为对象或字符串
- openlayers geojson read as wkt
- Ajax to read PHP
- Bootstrap javascript at very end and jQuery $(document).read
- read out KML FIle with Javascript
- 读取ReadableStream并指定大小参数:为什么state.highWaterMark总是被传递到_read()作
- jquery:在运行时创建/read.css样式
- read-web.config值是javascript中的aspx文件
- 在node.js中从fs.read读取的文件中指定数据字段
- 未捕获TypeError: Cannot read property 'geocode'未定义的'
- SailsJs中的错误.TypeError: Cannot read property '的定义