共用方式為


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()

啟動排程器,當任何 outgoingHandlers 的數據流傳回錯誤時,將會傳回錯誤。

建構函式詳細資料

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()

啟動排程器,當任何 outgoingHandlers 的數據流傳回錯誤時,將會傳回錯誤。

function do(): Promise<void>

傳回

Promise<void>