你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

性能改进提示:

  1. 输入流 highWaterMark 最好使用 bufferSize 参数设置相同的值,这将避免 Buffer.concat() 操作。
  2. concurrency 应设置比 maxBuffers 更小的值,这有助于降低传出处理程序等待流数据的可能性。 在这种情况下,将阻止传出处理程序。 传出队列不应为空。

构造函数

BufferScheduler(ReadableStream, number, number, OutgoingHandler, number, BufferEncoding)

创建 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>