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() | 啟動排程器,當任何 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>