BufferScheduler class
此类接受 Node.js 可读流作为输入,并将数据从流读取到内部缓冲区结构,直到达到 maxBuffers 为止。 每个可用的缓冲区都会尝试触发 outgoingHandler。
内部缓冲区结构包括传入缓冲区数组和传出缓冲区数组。 传入缓冲区数组包含“空”缓冲区,可以填充新的传入数据。 传出数组包括要由 outgoingHandler 处理的填充缓冲区。 上述每个缓冲区大小都由参数 bufferSize 定义。
NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING
NUM_OF_ALL_BUFFERS小于或等于 maxBuffers
性能改进提示:
- 输入流 highWaterMark 最好使用 bufferSize 参数设置相同的值,这将避免 Buffer.concat() 操作。
- concurrency 应设置比 maxBuffers 更小的值,这有助于降低传出处理程序等待流数据的可能性。 在这种情况下,将阻止传出处理程序。 传出队列不应为空。
构造函数
| Buffer |
创建 BufferScheduler 的实例。 |
方法
| do() | 启动计划程序,当任何传出Handlers 的流返回错误时,将返回错误。 |
构造函数详细信息
BufferScheduler(ReadableStream, number, number, OutgoingHandler, number, BufferEncoding)
创建 BufferScheduler 的实例。
new BufferScheduler(readable: ReadableStream, bufferSize: number, maxBuffers: number, outgoingHandler: OutgoingHandler, concurrency: number, encoding?: BufferEncoding)
参数
- readable
-
ReadableStream
Node.js 可读流
- bufferSize
-
number
每个维护缓冲区的缓冲区大小
- maxBuffers
-
number
可以分配多少个缓冲区
- outgoingHandler
- OutgoingHandler
当缓冲区完全填充流数据时,计划触发的异步函数
- concurrency
-
number
执行 outgoingHandlers 的并发性(>0)
- encoding
-
BufferEncoding
[可选]当 Readable stream 是字符串流时,Readable stream 的编码
方法详细信息
do()
启动计划程序,当任何传出Handlers 的流返回错误时,将返回错误。
function do(): Promise<void>
返回
Promise<void>