BufferScheduler class

Kelas ini menerima aliran Node.js Dapat Dibaca sebagai input, dan terus membaca data dari aliran ke struktur buffer internal, sampai mencapai maxBuffers. Setiap buffer yang tersedia akan mencoba memicu outgoingHandler.

Struktur buffer internal mencakup array buffer masuk, dan array buffer keluar. Array buffer masuk mencakup buffer "kosong" dapat diisi dengan data masuk baru. Array keluar mencakup buffer yang diisi untuk ditangani oleh outgoingHandler. Setiap ukuran buffer di atas ditentukan oleh bufferSize parameter.

NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING

NUM_OF_ALL_BUFFERS lebih kecil dari atau sama dengan maxBuffers

TIPS PENINGKATAN PERFORMA:

  1. Input stream highWaterMark lebih baik mengatur nilai yang sama dengan parameter bufferSize, yang akan menghindari operasi Buffer.concat().
  2. konkurensi harus menetapkan nilai yang lebih kecil daripada maxBuffers, yang berguna untuk mengurangi kemungkinan saat penangan keluar menunggu data aliran. dalam situasi ini, handler keluar diblokir. Antrean keluar tidak boleh kosong.

Konstruktor

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

Membuat instans BufferScheduler.

Metode

do()

Mulai penjadwal, akan mengembalikan kesalahan saat aliran salah satu outgoingHandlers mengembalikan kesalahan.

Detail Konstruktor

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

Membuat instans BufferScheduler.

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

Parameter

readable

ReadableStream

Aliran yang dapat dibaca Node.js

bufferSize

number

Ukuran buffer dari setiap buffer yang dipertahankan

maxBuffers

number

Berapa banyak buffer yang dapat dialokasikan

outgoingHandler
OutgoingHandler

Fungsi asinkron yang dijadwalkan untuk dipicu ketika buffer penuh diisi dengan data aliran

concurrency

number

Konkurensi eksekusi outgoingHandlers (>0)

encoding

BufferEncoding

[Opsional] Pengkodean aliran yang dapat dibaca saat merupakan aliran string

Detail Metode

do()

Mulai penjadwal, akan mengembalikan kesalahan saat aliran salah satu outgoingHandlers mengembalikan kesalahan.

function do(): Promise<void>

Mengembalikan

Promise<void>