Поделиться через


BufferScheduler class

Этот класс принимает поток Node.js для чтения в качестве входных данных и сохраняет чтение данных из потока во внутреннюю структуру буфера, пока не достигнет maxBuffers. Каждый доступный буфер попытается активировать исходящийHandler.

Внутренняя структура буфера включает входящий массив буфера и исходящий массив буферов. Входящий массив буферов включает в себя "пустые" буферы, которые можно заполнить новыми входящими данными. Исходящий массив включает заполненные буферы, которые обрабатываются исходящимHandler. Каждый указанный выше размер буфера определяется параметром 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

Параллелизм выполнения исходящихHandlers (>0)

encoding

BufferEncoding

[Необязательный] Кодирование читаемого потока, когда это строковый поток

Сведения о методе

do()

Запустите планировщик, будет возвращать ошибку, когда поток любого исходящегоHandlers возвращает ошибку.

function do(): Promise<void>

Возвращаемое значение

Promise<void>