Freigeben über


BufferScheduler class

Diese Klasse akzeptiert einen Node.js lesbaren Datenstrom als Eingabe und liest Daten aus dem Datenstrom in der internen Pufferstruktur, bis sie maxBuffers erreicht. Jeder verfügbare Puffer versucht, ausgehenden Handler auszulösen.

Die interne Pufferstruktur enthält ein eingehendes Pufferarray und ein ausgehendes Pufferarray. Das Array des eingehenden Puffers enthält die "leeren" Puffer, die mit neuen eingehenden Daten gefüllt werden können. Das ausgehende Array enthält die gefüllten Puffer, die von outgoingHandler behandelt werden sollen. Jede oben genannte Puffergröße wird durch ParameterpufferSize definiert.

NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING

NUM_OF_ALL_BUFFERS kleiner oder gleich maxBuffers

TIPPS ZUR LEISTUNGSVERBESSERUNG:

  1. Für den Eingabestream highWaterMark ist es besser, den gleichen Wert mit dem bufferSize-Parameter festzulegen, wodurch Buffer.concat()-Operationen vermieden werden.
  2. concurrency sollte einen kleineren Wert als maxBuffers festlegen, was hilfreich ist, um die Wahrscheinlichkeit zu verringern, dass ein ausgehender Handler auf die Streamdaten wartet. in diesem Fall werden ausgehende Handler blockiert. Die ausgehende Warteschlange sollte nicht leer sein.

Konstruktoren

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

Erstellt eine Instanz von BufferScheduler.

Methoden

do()

Starten Sie den Scheduler, gibt einen Fehler zurück, wenn der Datenstrom eines der ausgehenden Handler einen Fehler zurückgibt.

Details zum Konstruktor

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

Erstellt eine Instanz von BufferScheduler.

new BufferScheduler(readable: ReadableStream, bufferSize: number, maxBuffers: number, outgoingHandler: OutgoingHandler, concurrency: number, encoding?: BufferEncoding)

Parameter

readable

ReadableStream

Ein Node.js lesbarer Datenstrom

bufferSize

number

Puffergröße jedes verwalteten Puffers

maxBuffers

number

Anzahl der Puffer, die zugewiesen werden können

outgoingHandler
OutgoingHandler

Eine asynchrone Funktion, die ausgelöst werden soll, wenn ein Puffer vollständig mit Datenstrom gefüllt ist

concurrency

number

Parallelität der Ausführung ausgehender Handler (>0)

encoding

BufferEncoding

[Fakultativ] Codierung des lesbaren Streams, wenn es sich um einen Zeichenfolgenstream handelt

Details zur Methode

do()

Starten Sie den Scheduler, gibt einen Fehler zurück, wenn der Datenstrom eines der ausgehenden Handler einen Fehler zurückgibt.

function do(): Promise<void>

Gibt zurück

Promise<void>