Readable class

Memperluas

Stream

Properti

closed

Adalah true setelah 'close' telah dipancarkan.

destroyed

Adalah true setelah readable.destroy() telah dipanggil.

errored

Mengembalikan kesalahan jika aliran telah dihancurkan dengan kesalahan.

readable

Apakah true jika aman untuk memanggil baca, yang berarti aliran belum dihancurkan atau dipancarkan 'error' atau 'end'.

readableAborted

Mengembalikan apakah aliran dihancurkan atau error sebelum dipancarkan 'end'.

readableDidRead

Mengembalikan apakah 'data' telah dipancarkan.

readableEncoding

Pengambil untuk properti encoding aliran tertentu Readable . Properti encoding dapat diatur menggunakan metode setEncoding .

readableEnded

Menjadi true ketika 'end' peristiwa dipancarkan.

readableFlowing

Properti ini mencerminkan status Readable aliran saat ini seperti yang dijelaskan di bagian Tiga status .

readableHighWaterMark

Mengembalikan nilai lulus highWaterMark saat membuat ini Readable.

readableLength

Properti ini berisi jumlah byte (atau objek) dalam antrean yang siap dibaca. Nilai tersebut memberikan data introspeksi mengenai status highWaterMark.

readableObjectMode

Pengambil untuk properti objectMode aliran tertentu Readable .

Metode

addListener(string | symbol, (args: any[]) => void)
addListener<E>(E, (args: ReadableEventMap[E]) => void)
compose(WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void, Abortable)
import { Readable } from 'node:stream';

async function* splitToWords(source) {
  for await (const chunk of source) {
    const words = String(chunk).split(' ');

    for (const word of words) {
      yield word;
    }
  }
}

const wordsStream = Readable.from(['text passed through', 'composed stream']).compose(splitToWords);
const words = await wordsStream.toArray();

console.log(words); // prints ['text', 'passed', 'through', 'composed', 'stream']

readable.compose(s) setara dengan stream.compose(readable, s).

Metode ini juga memungkinkan untuk AbortSignal disediakan, yang akan menghancurkan aliran yang disusun saat dibatalkan.

Lihat stream.compose(...streams) untuk informasi lebih lanjut.

destroy(Error)

Hancurkan alirannya. Secara opsional memancarkan peristiwa 'error' , dan memancarkan 'close' peristiwa (kecuali diatur emitClose ke false). Setelah panggilan ini, aliran yang dapat dibaca akan melepaskan sumber daya internal apa pun dan panggilan berikutnya akan push() diabaikan.

Setelah destroy() dipanggil, panggilan lebih lanjut akan menjadi no-op dan tidak ada kesalahan lebih lanjut kecuali dari _destroy() yang dapat dipancarkan sebagai 'error'.

Pelaksana tidak boleh mengganti metode ini, melainkan menerapkan readable._destroy().

drop(number, Abortable)

Metode ini mengembalikan aliran baru dengan potongan batas pertama yang dijatuhkan dari awal.

emit(string | symbol, any[])
emit<E>(E, ReadableEventMap[E])
every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

Metode ini mirip dengan Array.prototype.every dan memanggil fn pada setiap potongan dalam aliran untuk memeriksa apakah semua nilai pengembalian yang ditunggu adalah nilai kebenaran untuk fn. Setelah panggilan fn pada awaitnilai pengembalian chunk ed palsu, aliran dihancurkan dan janji dipenuhi dengan false. Jika semua panggilan fn pada potongan mengembalikan nilai yang benar, janji dipenuhi dengan true.

filter((data: any, options?: Abortable) => boolean | Promise<boolean>, ReadableOperatorOptions)

Metode ini memungkinkan pemfilteran aliran. Untuk setiap potongan dalam aliran, fungsi fn akan dipanggil dan jika mengembalikan nilai yang benar, potongan akan diteruskan ke aliran hasil. Jika fungsi fn mengembalikan promise - promise tersebut akan ed await.

find((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
find<T>((data: any, options?: Abortable) => data, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

Metode ini mirip dengan Array.prototype.find dan memanggil fn pada setiap potongan dalam aliran untuk menemukan potongan dengan nilai kebenaran untuk fn. Setelah nilai pengembalian panggilan fn yang ditunggu-tunggu adalah kebenaran, aliran dihancurkan dan janji dipenuhi dengan nilai yang fn mengembalikan nilai yang benar. Jika semua panggilan fn pada potongan mengembalikan nilai palsu, janji dipenuhi dengan undefined.

flatMap((data: any, options?: Abortable) => any, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

Metode ini mengembalikan aliran baru dengan menerapkan callback yang diberikan ke setiap bagian aliran dan kemudian meratakan hasilnya.

Dimungkinkan untuk mengembalikan aliran atau iterable atau asinkron lain yang dapat diulang dari fn dan aliran hasil akan digabungkan (diratakan) ke dalam aliran yang dikembalikan.

forEach((data: any, options?: Abortable) => void | Promise<void>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

Metode ini memungkinkan iterasi aliran. Untuk setiap potongan dalam aliran, fungsi fn akan dipanggil. Jika fungsi fn mengembalikan promise - promise tersebut akan ed await.

Metode ini berbeda dari for await...of loop karena dapat secara opsional memproses potongan secara bersamaan. Selain itu, iterasi forEach hanya dapat dihentikan dengan melewati signal opsi dan membatalkan AbortController terkait sementara for await...of dapat dihentikan dengan break atau return. Dalam kedua kasus tersebut, aliran akan dihancurkan.

Metode ini berbeda dengan mendengarkan 'data' peristiwa karena menggunakan readable peristiwa dalam mesin yang mendasarinya dan dapat membatasi jumlah panggilan fn bersamaan.

from(Iterable<any> | AsyncIterable<any>, ReadableOptions<Readable>)

Metode utilitas untuk membuat Aliran yang Dapat Dibaca dari iterator.

fromWeb(ReadableStream<any>, Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">)

Metode utilitas untuk membuat dari Readable web ReadableStream.

isDisturbed(ReadableStream<any> | ReadableStream)

Mengembalikan apakah streaming telah dibaca dari atau dibatalkan.

isPaused()

Metode ini readable.isPaused() mengembalikan status operasi saat ini dari .Readable Ini digunakan terutama oleh mekanisme yang mendasari metode ini readable.pipe() . Dalam kebanyakan kasus umum, tidak akan ada alasan untuk menggunakan metode ini secara langsung.

const readable = new stream.Readable();

readable.isPaused(); // === false
readable.pause();
readable.isPaused(); // === true
readable.resume();
readable.isPaused(); // === false
iterator(ReadableIteratorOptions)

Iterator yang dibuat dengan metode ini memberi pengguna opsi untuk membatalkan penghancuran aliran jika for await...of loop keluar oleh return, break, atau throw, atau jika iterator harus menghancurkan aliran jika aliran memancarkan kesalahan selama iterasi.

listenerCount(string | symbol, (args: any[]) => void)
listenerCount<E>(E, (args: ReadableEventMap[E]) => void)
listeners(string | symbol)
listeners<E>(E)
map((data: any, options?: Abortable) => any, ReadableOperatorOptions)

Metode ini memungkinkan pemetaan melalui aliran. Fungsi fn akan dipanggil untuk setiap potongan dalam aliran. Jika fungsi fn mengembalikan promise - promise tersebut akan ed awaitsebelum diteruskan ke aliran hasil.

off(string | symbol, (args: any[]) => void)
off<E>(E, (args: ReadableEventMap[E]) => void)
on(string | symbol, (args: any[]) => void)
on<E>(E, (args: ReadableEventMap[E]) => void)
once(string | symbol, (args: any[]) => void)
once<E>(E, (args: ReadableEventMap[E]) => void)
pause()

Metode ini readable.pause() akan menyebabkan aliran dalam mode mengalir berhenti memancarkan 'data' peristiwa, beralih dari mode mengalir. Data apa pun yang tersedia akan tetap berada di buffer internal.

const readable = getReadableStreamSomehow();
readable.on('data', (chunk) => {
  console.log(`Received ${chunk.length} bytes of data.`);
  readable.pause();
  console.log('There will be no additional data for 1 second.');
  setTimeout(() => {
    console.log('Now data will start flowing again.');
    readable.resume();
  }, 1000);
});

Metode ini readable.pause() tidak berpengaruh jika ada 'readable' pendengar peristiwa.

prependListener(string | symbol, (args: any[]) => void)
prependListener<E>(E, (args: ReadableEventMap[E]) => void)
prependOnceListener(string | symbol, (args: any[]) => void)
prependOnceListener<E>(E, (args: ReadableEventMap[E]) => void)
push(any, BufferEncoding)
rawListeners(string | symbol)
rawListeners<E>(E)
read(number)

Metode ini readable.read() membaca data dari buffer internal dan mengembalikannya. Jika tidak ada data yang tersedia untuk dibaca, dikembalikan. null Secara default, data dikembalikan sebagai Buffer objek kecuali pengkodean telah ditentukan menggunakan metode atau readable.setEncoding() aliran beroperasi dalam mode objek.

Argumen opsional size menentukan jumlah byte tertentu untuk dibaca. Jika size byte tidak tersedia untuk dibaca, null akan dikembalikan kecuali aliran telah berakhir, dalam hal ini semua data yang tersisa di buffer internal akan dikembalikan.

Jika size argumen tidak ditentukan, semua data yang terkandung dalam buffer internal akan dikembalikan.

Argumen size harus kurang dari atau sama dengan 1 GiB.

Metode ini readable.read() hanya boleh dipanggil pada Readable aliran yang beroperasi dalam mode dijeda. Dalam mode mengalir, readable.read() dipanggil secara otomatis sampai buffer internal benar-benar terkuras.

const readable = getReadableStreamSomehow();

// 'readable' may be triggered multiple times as data is buffered in
readable.on('readable', () => {
  let chunk;
  console.log('Stream is readable (new data received in buffer)');
  // Use a loop to make sure we read all currently available data
  while (null !== (chunk = readable.read())) {
    console.log(`Read ${chunk.length} bytes of data...`);
  }
});

// 'end' will be triggered once when there is no more data available
readable.on('end', () => {
  console.log('Reached end of stream.');
});

Setiap panggilan ke readable.read() mengembalikan potongan data, atau null. Potongan-potongan itu tidak tergabung. Perulangan while diperlukan untuk menggunakan semua data yang saat ini berada di buffer. Saat membaca file .read() besar dapat mengembalikan null, setelah mengkonsumsi semua konten buffer sejauh ini, tetapi masih ada lebih banyak data yang akan datang belum buffer. Dalam hal ini, peristiwa baru 'readable' akan dipancarkan ketika ada lebih banyak data di buffer. Akhirnya 'end' event akan dipancarkan ketika tidak ada lagi data yang akan datang.

Oleh karena itu, untuk membaca seluruh konten file dari readable, perlu untuk mengumpulkan potongan di beberapa 'readable' peristiwa:

const chunks = [];

readable.on('readable', () => {
  let chunk;
  while (null !== (chunk = readable.read())) {
    chunks.push(chunk);
  }
});

readable.on('end', () => {
  const content = chunks.join('');
});

Aliran Readable dalam mode objek akan selalu mengembalikan satu item dari panggilan ke readable.read(size), terlepas dari nilai size argumen.

Jika metode mengembalikan readable.read() sebagian data, 'data' peristiwa juga akan dipancarkan.

Panggilan yang dibaca setelah 'end' peristiwa dipancarkan akan kembali null. Tidak ada kesalahan runtime yang akan diangkat.

reduce<T>((previous: any, data: any, options?: Abortable) => T)

Metode ini memanggil fn pada setiap potongan aliran secara berurutan, meneruskannya hasil dari perhitungan pada elemen sebelumnya. Ini mengembalikan janji untuk nilai akhir pengurangan.

Jika tidak ada nilai awal yang disediakan, potongan pertama aliran digunakan sebagai nilai awal. Jika aliran kosong, janji ditolak dengan properti dengan TypeErrorERR_INVALID_ARGS kode.

Fungsi peredam mengulangi elemen aliran demi elemen yang berarti tidak ada parameter konkurensi atau paralelisme. Untuk melakukan pengurangan secara bersamaan, Anda dapat mengekstrak fungsi asinkron ke readable.map metode.

reduce<T>((previous: T, data: any, options?: Abortable) => T, T, Abortable)
removeAllListeners(string | symbol)
removeAllListeners<E>(E)
removeListener(string | symbol, (args: any[]) => void)
removeListener<E>(E, (args: ReadableEventMap[E]) => void)
resume()

Metode ini readable.resume() menyebabkan aliran yang dijeda Readable secara eksplisit untuk melanjutkan peristiwa pemancaran 'data' , mengalihkan aliran ke mode mengalir.

Metode ini readable.resume() dapat digunakan untuk sepenuhnya mengonsumsi data dari aliran tanpa benar-benar memproses data tersebut:

getReadableStreamSomehow()
  .resume()
  .on('end', () => {
    console.log('Reached the end, but did not read anything.');
  });

Metode ini readable.resume() tidak berpengaruh jika ada 'readable' pendengar peristiwa.

setEncoding(BufferEncoding)

Metode ini readable.setEncoding() mengatur pengkodean karakter untuk data yang dibaca dari Readable aliran.

Secara default, tidak ada pengkodean yang ditetapkan dan data aliran akan dikembalikan sebagai Buffer objek. Mengatur pengodean menyebabkan data aliran dikembalikan sebagai string pengodean yang ditentukan, bukan sebagai Buffer objek. Misalnya, memanggil readable.setEncoding('utf8') akan menyebabkan data output ditafsirkan sebagai data UTF-8, dan diteruskan sebagai string. Memanggil readable.setEncoding('hex') akan menyebabkan data dikodekan dalam format string heksadesimal.

Aliran Readable akan menangani karakter multi-byte yang dikirimkan melalui aliran dengan benar yang akan didekodekan secara tidak benar jika hanya ditarik dari aliran sebagai Buffer objek.

const readable = getReadableStreamSomehow();
readable.setEncoding('utf8');
readable.on('data', (chunk) => {
  assert.equal(typeof chunk, 'string');
  console.log('Got %d characters of string data:', chunk.length);
});
some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

Metode ini mirip dengan Array.prototype.some dan memanggil fn pada setiap potongan dalam aliran hingga nilai pengembalian yang ditunggu-tunggu adalah true (atau nilai kebenaran apa pun). Setelah panggilan fn pada awaitnilai pengembalian chunk ed benar, aliran dihancurkan dan janji dipenuhi dengan true. Jika tidak ada panggilan fn pada potongan yang mengembalikan nilai yang benar, janji itu dipenuhi dengan false.

take(number, Abortable)

Metode ini mengembalikan aliran baru dengan potongan batas pertama.

toArray(Abortable)

Metode ini memungkinkan dengan mudah mendapatkan konten aliran.

Karena metode ini membaca seluruh aliran ke dalam memori, metode ini meniadakan manfaat aliran. Ini ditujukan untuk interoperabilitas dan kenyamanan, bukan sebagai cara utama untuk mengonsumsi streaming.

toWeb(ReadableStream, ReadableToWebOptions)

Metode utilitas untuk membuat web ReadableStream dari .Readable

unpipe(WritableStream)

Metode ini readable.unpipe() melepaskan aliran yang Writable sebelumnya terpasang menggunakan metode pipa .

Jika tidak destination ditentukan, maka semua pipa terlepas.

Jika ditentukan destination , tetapi tidak ada pipa yang disiapkan untuk itu, maka metode tersebut tidak melakukan apa-apa.

import fs from 'node:fs';
const readable = getReadableStreamSomehow();
const writable = fs.createWriteStream('file.txt');
// All the data from readable goes into 'file.txt',
// but only for the first second.
readable.pipe(writable);
setTimeout(() => {
  console.log('Stop writing to file.txt.');
  readable.unpipe(writable);
  console.log('Manually close the file stream.');
  writable.end();
}, 1000);
unshift(any, BufferEncoding)

Melewati chunk sebagai null sinyal akhir aliran (EOF) dan berperilaku sama dengan readable.push(null), setelah itu tidak ada lagi data yang dapat ditulis. Sinyal EOF diletakkan di ujung buffer dan data buffer apa pun akan tetap disiram.

Metode ini readable.unshift() mendorong sebagian data kembali ke buffer internal. Ini berguna dalam situasi tertentu di mana aliran dikonsumsi oleh kode yang perlu "membatalkan konsumsi" sejumlah data yang telah ditarik secara optimis dari sumbernya, sehingga data dapat diteruskan ke pihak lain.

Metode ini stream.unshift(chunk) tidak dapat dipanggil setelah 'end' peristiwa dipancarkan atau kesalahan runtime akan dilemparkan.

Pengembang yang sering menggunakan stream.unshift() harus mempertimbangkan untuk beralih ke penggunaan Transform aliran sebagai gantinya. Lihat bagian untuk API for stream implementers informasi lebih lanjut.

// Pull off a header delimited by \n\n.
// Use unshift() if we get too much.
// Call the callback with (error, header, stream).
import { StringDecoder } from 'node:string_decoder';
function parseHeader(stream, callback) {
  stream.on('error', callback);
  stream.on('readable', onReadable);
  const decoder = new StringDecoder('utf8');
  let header = '';
  function onReadable() {
    let chunk;
    while (null !== (chunk = stream.read())) {
      const str = decoder.write(chunk);
      if (str.includes('\n\n')) {
        // Found the header boundary.
        const split = str.split(/\n\n/);
        header += split.shift();
        const remaining = split.join('\n\n');
        const buf = Buffer.from(remaining, 'utf8');
        stream.removeListener('error', callback);
        // Remove the 'readable' listener before unshifting.
        stream.removeListener('readable', onReadable);
        if (buf.length)
          stream.unshift(buf);
        // Now the body of the message can be read from the stream.
        callback(null, header, stream);
        return;
      }
      // Still reading the header.
      header += str;
    }
  }
}

Tidak seperti push, stream.unshift(chunk) tidak akan mengakhiri proses membaca dengan mengatur ulang status pembacaan internal aliran. Hal ini dapat menyebabkan hasil yang tidak terduga jika readable.unshift() dipanggil selama pembacaan (yaitu dari dalam implementasi _read pada aliran kustom). Mengikuti panggilan ke readable.unshift() dengan dorongan langsung akan mengatur ulang status pembacaan dengan tepat, namun yang terbaik adalah menghindari panggilan readable.unshift() saat dalam proses melakukan pembacaan.

wrap(ReadableStream)

Sebelum Node.js 0.10, streaming tidak mengimplementasikan seluruh node:stream API modul seperti yang ditentukan saat ini. (Lihat Compatibility untuk informasi lebih lanjut.)

Saat menggunakan pustaka Node.js lama yang memancarkan 'data' peristiwa dan memiliki metode jeda yang hanya bersifat pemberitahuan, metode tersebut readable.wrap() dapat digunakan untuk membuat Readable aliran yang menggunakan aliran lama sebagai sumber datanya.

Jarang perlu digunakan readable.wrap() tetapi metode ini telah disediakan sebagai kenyamanan untuk berinteraksi dengan aplikasi dan perpustakaan Node.js lama.

import { OldReader } from './old-api-module.js';
import { Readable } from 'node:stream';
const oreader = new OldReader();
const myReader = new Readable().wrap(oreader);

myReader.on('readable', () => {
  myReader.read(); // etc.
});
[asyncIterator]()
[toAsyncStreamable]()

Saat --experimental-stream-iter bendera diaktifkan, Readable streaming mengimplementasikan Stream.toAsyncStreamable protokol, memungkinkan konsumsi yang efisien oleh stream/iter API.

Ini menyediakan iterator asinkron batch yang menguras buffer internal aliran ke dalam Uint8Array[] batch, mengamortisasi overhead Promise per potongan dari jalur standar Symbol.asyncIterator . Untuk aliran mode byte, potongan dihasilkan secara langsung sebagai Buffer instans (yang merupakan Uint8Array subkelas). Untuk aliran mode objek atau yang dikodekan, setiap potongan dinormalisasi sebelum Uint8Array pengelompokan.

Iterator yang dikembalikan ditandai sebagai sumber yang divalidasi, sehingga from() melewatinya tanpa normalisasi tambahan.

import { Readable } from 'node:stream';
import { text, from } from 'node:stream/iter';

const readable = new Readable({
  read() { this.push('hello'); this.push(null); },
});

// Readable is automatically consumed via toAsyncStreamable
console.log(await text(from(readable))); // 'hello'

Tanpa --experimental-stream-iter bendera, memanggil metode ini melempar ERR_STREAM_ITER_MISSING_FLAG.

Metode yang Diwarisi

eventNames()

Mengembalikan array yang mencantumkan peristiwa di mana pemancar telah mendaftarkan pendengar.

import { EventEmitter } from 'node:events';

const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});

const sym = Symbol('symbol');
myEE.on(sym, () => {});

console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]
getMaxListeners()

Mengembalikan nilai pendengar maks saat ini untuk EventEmitter yang diatur oleh emitter.setMaxListeners(n) atau default ke events.defaultMaxListeners.

pipe<T>(T, PipeOptions)
setMaxListeners(number)

Secara default EventEmitterakan mencetak peringatan jika lebih dari 10 pendengar ditambahkan untuk peristiwa tertentu. Ini adalah default yang berguna yang membantu menemukan kebocoran memori. Metode emitter.setMaxListeners() memungkinkan batas untuk dimodifikasi untuk instans EventEmitter spesifik ini. Nilai dapat diatur ke Infinity (atau 0) untuk menunjukkan jumlah listener yang tidak terbatas.

Mengembalikan referensi ke EventEmitter, sehingga panggilan dapat ditautkan.

[captureRejectionSymbol](Error, string | symbol, any[])

Metode ini Symbol.for('nodejs.rejection') dipanggil jika penolakan janji terjadi saat memancarkan peristiwa dan captureRejections diaktifkan pada emitor. Dimungkinkan untuk digunakan events.captureRejectionSymbol sebagai pengganti Symbol.for('nodejs.rejection').

import { EventEmitter, captureRejectionSymbol } from 'node:events';

class MyClass extends EventEmitter {
  constructor() {
    super({ captureRejections: true });
  }

  [captureRejectionSymbol](err, event, ...args) {
    console.log('rejection happened for', event, 'with', err, ...args);
    this.destroy(err);
  }

  destroy(err) {
    // Tear the resource down here.
  }
}

Detail Konstruktor

Readable(ReadableOptions<Readable>)

new Readable(options?: ReadableOptions<Readable>)

Parameter

options

ReadableOptions<Readable>

Detail Properti

closed

Adalah true setelah 'close' telah dipancarkan.

closed: boolean

Nilai Properti

boolean

destroyed

Adalah true setelah readable.destroy() telah dipanggil.

destroyed: boolean

Nilai Properti

boolean

errored

Mengembalikan kesalahan jika aliran telah dihancurkan dengan kesalahan.

errored: null | Error

Nilai Properti

null | Error

readable

Apakah true jika aman untuk memanggil baca, yang berarti aliran belum dihancurkan atau dipancarkan 'error' atau 'end'.

readable: boolean

Nilai Properti

boolean

readableAborted

Mengembalikan apakah aliran dihancurkan atau error sebelum dipancarkan 'end'.

readableAborted: boolean

Nilai Properti

boolean

readableDidRead

Mengembalikan apakah 'data' telah dipancarkan.

readableDidRead: boolean

Nilai Properti

boolean

readableEncoding

Pengambil untuk properti encoding aliran tertentu Readable . Properti encoding dapat diatur menggunakan metode setEncoding .

readableEncoding: null | BufferEncoding

Nilai Properti

null | BufferEncoding

readableEnded

Menjadi true ketika 'end' peristiwa dipancarkan.

readableEnded: boolean

Nilai Properti

boolean

readableFlowing

Properti ini mencerminkan status Readable aliran saat ini seperti yang dijelaskan di bagian Tiga status .

readableFlowing: null | boolean

Nilai Properti

null | boolean

readableHighWaterMark

Mengembalikan nilai lulus highWaterMark saat membuat ini Readable.

readableHighWaterMark: number

Nilai Properti

number

readableLength

Properti ini berisi jumlah byte (atau objek) dalam antrean yang siap dibaca. Nilai tersebut memberikan data introspeksi mengenai status highWaterMark.

readableLength: number

Nilai Properti

number

readableObjectMode

Pengambil untuk properti objectMode aliran tertentu Readable .

readableObjectMode: boolean

Nilai Properti

boolean

Detail Metode

addListener(string | symbol, (args: any[]) => void)

function addListener(eventName: string | symbol, listener: (args: any[]) => void): Readable

Parameter

eventName

string | symbol

listener

(args: any[]) => void

Mengembalikan

addListener<E>(E, (args: ReadableEventMap[E]) => void)

function addListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

Parameter

eventName

E

listener

(args: ReadableEventMap[E]) => void

Mengembalikan

compose(WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void, Abortable)

import { Readable } from 'node:stream';

async function* splitToWords(source) {
  for await (const chunk of source) {
    const words = String(chunk).split(' ');

    for (const word of words) {
      yield word;
    }
  }
}

const wordsStream = Readable.from(['text passed through', 'composed stream']).compose(splitToWords);
const words = await wordsStream.toArray();

console.log(words); // prints ['text', 'passed', 'through', 'composed', 'stream']

readable.compose(s) setara dengan stream.compose(readable, s).

Metode ini juga memungkinkan untuk AbortSignal disediakan, yang akan menghancurkan aliran yang disusun saat dibatalkan.

Lihat stream.compose(...streams) untuk informasi lebih lanjut.

function compose(stream: WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void, options?: Abortable): Duplex

Parameter

stream

WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void

options

Abortable

Mengembalikan

Duplex

aliran yang disusun dengan aliran stream.

destroy(Error)

Hancurkan alirannya. Secara opsional memancarkan peristiwa 'error' , dan memancarkan 'close' peristiwa (kecuali diatur emitClose ke false). Setelah panggilan ini, aliran yang dapat dibaca akan melepaskan sumber daya internal apa pun dan panggilan berikutnya akan push() diabaikan.

Setelah destroy() dipanggil, panggilan lebih lanjut akan menjadi no-op dan tidak ada kesalahan lebih lanjut kecuali dari _destroy() yang dapat dipancarkan sebagai 'error'.

Pelaksana tidak boleh mengganti metode ini, melainkan menerapkan readable._destroy().

function destroy(error?: Error): Readable

Parameter

error

Error

Kesalahan yang akan diteruskan sebagai payload dalam 'error' peristiwa

Mengembalikan

drop(number, Abortable)

Metode ini mengembalikan aliran baru dengan potongan batas pertama yang dijatuhkan dari awal.

function drop(limit: number, options?: Abortable): Readable

Parameter

limit

number

jumlah potongan yang akan dihilangkan dari yang dapat dibaca.

options

Abortable

Mengembalikan

aliran dengan potongan batas yang dijatuhkan sejak awal.

emit(string | symbol, any[])

function emit(eventName: string | symbol, args: any[]): boolean

Parameter

eventName

string | symbol

args

any[]

Mengembalikan

boolean

emit<E>(E, ReadableEventMap[E])

function emit<E>(eventName: E, args: ReadableEventMap[E]): boolean

Parameter

eventName

E

args

ReadableEventMap[E]

Mengembalikan

boolean

every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

Metode ini mirip dengan Array.prototype.every dan memanggil fn pada setiap potongan dalam aliran untuk memeriksa apakah semua nilai pengembalian yang ditunggu adalah nilai kebenaran untuk fn. Setelah panggilan fn pada awaitnilai pengembalian chunk ed palsu, aliran dihancurkan dan janji dipenuhi dengan false. Jika semua panggilan fn pada potongan mengembalikan nilai yang benar, janji dipenuhi dengan true.

function every(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<boolean>

Parameter

fn

(data: any, options?: Abortable) => boolean | Promise<boolean>

fungsi untuk memanggil setiap bagian aliran. Asinkron atau tidak.

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

Mengembalikan

Promise<boolean>

Janji yang mengevaluasi jika trueFN mengembalikan nilai yang benar untuk setiap potongan.

filter((data: any, options?: Abortable) => boolean | Promise<boolean>, ReadableOperatorOptions)

Metode ini memungkinkan pemfilteran aliran. Untuk setiap potongan dalam aliran, fungsi fn akan dipanggil dan jika mengembalikan nilai yang benar, potongan akan diteruskan ke aliran hasil. Jika fungsi fn mengembalikan promise - promise tersebut akan ed await.

function filter(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: ReadableOperatorOptions): Readable

Parameter

fn

(data: any, options?: Abortable) => boolean | Promise<boolean>

fungsi untuk memfilter potongan dari aliran. Asinkron atau tidak.

options

ReadableOperatorOptions

Mengembalikan

aliran yang disaring dengan predikat fn.

find((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

function find(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<any>

Parameter

fn

(data: any, options?: Abortable) => boolean | Promise<boolean>

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

Mengembalikan

Promise<any>

find<T>((data: any, options?: Abortable) => data, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

Metode ini mirip dengan Array.prototype.find dan memanggil fn pada setiap potongan dalam aliran untuk menemukan potongan dengan nilai kebenaran untuk fn. Setelah nilai pengembalian panggilan fn yang ditunggu-tunggu adalah kebenaran, aliran dihancurkan dan janji dipenuhi dengan nilai yang fn mengembalikan nilai yang benar. Jika semua panggilan fn pada potongan mengembalikan nilai palsu, janji dipenuhi dengan undefined.

function find<T>(fn: (data: any, options?: Abortable) => data, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<undefined | T>

Parameter

fn

(data: any, options?: Abortable) => data

fungsi untuk memanggil setiap bagian aliran. Asinkron atau tidak.

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

Mengembalikan

Promise<undefined | T>

Janji yang mengevaluasi ke potongan pertama yang dievaluasi FN dengan nilai kebenaran, atau undefined jika tidak ada elemen yang ditemukan.

flatMap((data: any, options?: Abortable) => any, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

Metode ini mengembalikan aliran baru dengan menerapkan callback yang diberikan ke setiap bagian aliran dan kemudian meratakan hasilnya.

Dimungkinkan untuk mengembalikan aliran atau iterable atau asinkron lain yang dapat diulang dari fn dan aliran hasil akan digabungkan (diratakan) ke dalam aliran yang dikembalikan.

function flatMap(fn: (data: any, options?: Abortable) => any, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Readable

Parameter

fn

(data: any, options?: Abortable) => any

Fungsi untuk memetakan setiap potongan dalam aliran. Mungkin asinkron. Mungkin aliran atau generator.

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

Mengembalikan

aliran yang dipetakan datar dengan fungsi fn.

forEach((data: any, options?: Abortable) => void | Promise<void>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

Metode ini memungkinkan iterasi aliran. Untuk setiap potongan dalam aliran, fungsi fn akan dipanggil. Jika fungsi fn mengembalikan promise - promise tersebut akan ed await.

Metode ini berbeda dari for await...of loop karena dapat secara opsional memproses potongan secara bersamaan. Selain itu, iterasi forEach hanya dapat dihentikan dengan melewati signal opsi dan membatalkan AbortController terkait sementara for await...of dapat dihentikan dengan break atau return. Dalam kedua kasus tersebut, aliran akan dihancurkan.

Metode ini berbeda dengan mendengarkan 'data' peristiwa karena menggunakan readable peristiwa dalam mesin yang mendasarinya dan dapat membatasi jumlah panggilan fn bersamaan.

function forEach(fn: (data: any, options?: Abortable) => void | Promise<void>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<void>

Parameter

fn

(data: any, options?: Abortable) => void | Promise<void>

fungsi untuk memanggil setiap bagian aliran. Asinkron atau tidak.

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

Mengembalikan

Promise<void>

janji ketika aliran selesai.

from(Iterable<any> | AsyncIterable<any>, ReadableOptions<Readable>)

Metode utilitas untuk membuat Aliran yang Dapat Dibaca dari iterator.

static function from(iterable: Iterable<any> | AsyncIterable<any>, options?: ReadableOptions<Readable>): Readable

Parameter

iterable

Iterable<any> | AsyncIterable<any>

Objek yang mengimplementasikan protokol Symbol.asyncIterator atau Symbol.iterator iterable. Memancarkan peristiwa 'error' jika nilai null diteruskan.

options

ReadableOptions<Readable>

Opsi yang diberikan untuk new stream.Readable([options]). Secara default, Readable.from() akan diatur options.objectMode ke true, kecuali ini secara eksplisit dipilih keluar dengan pengaturan options.objectMode ke false.

Mengembalikan

fromWeb(ReadableStream<any>, Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">)

Metode utilitas untuk membuat dari Readable web ReadableStream.

static function fromWeb(readableStream: ReadableStream<any>, options?: Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">): Readable

Parameter

readableStream

ReadableStream<any>

options

Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">

Mengembalikan

isDisturbed(ReadableStream<any> | ReadableStream)

Mengembalikan apakah streaming telah dibaca dari atau dibatalkan.

static function isDisturbed(stream: ReadableStream<any> | ReadableStream): boolean

Parameter

stream

ReadableStream<any> | ReadableStream

Mengembalikan

boolean

isPaused()

Metode ini readable.isPaused() mengembalikan status operasi saat ini dari .Readable Ini digunakan terutama oleh mekanisme yang mendasari metode ini readable.pipe() . Dalam kebanyakan kasus umum, tidak akan ada alasan untuk menggunakan metode ini secara langsung.

const readable = new stream.Readable();

readable.isPaused(); // === false
readable.pause();
readable.isPaused(); // === true
readable.resume();
readable.isPaused(); // === false
function isPaused(): boolean

Mengembalikan

boolean

iterator(ReadableIteratorOptions)

Iterator yang dibuat dengan metode ini memberi pengguna opsi untuk membatalkan penghancuran aliran jika for await...of loop keluar oleh return, break, atau throw, atau jika iterator harus menghancurkan aliran jika aliran memancarkan kesalahan selama iterasi.

function iterator(options?: ReadableIteratorOptions): AsyncIterator<any, undefined, any>

Parameter

options

ReadableIteratorOptions

Mengembalikan

AsyncIterator<any, undefined, any>

listenerCount(string | symbol, (args: any[]) => void)

function listenerCount(eventName: string | symbol, listener?: (args: any[]) => void): number

Parameter

eventName

string | symbol

listener

(args: any[]) => void

Mengembalikan

number

listenerCount<E>(E, (args: ReadableEventMap[E]) => void)

function listenerCount<E>(eventName: E, listener?: (args: ReadableEventMap[E]) => void): number

Parameter

eventName

E

listener

(args: ReadableEventMap[E]) => void

Mengembalikan

number

listeners(string | symbol)

function listeners(eventName: string | symbol): (args: any[]) => void[]

Parameter

eventName

string | symbol

Mengembalikan

(args: any[]) => void[]

listeners<E>(E)

function listeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]

Parameter

eventName

E

Mengembalikan

(args: ReadableEventMap[E]) => void[]

map((data: any, options?: Abortable) => any, ReadableOperatorOptions)

Metode ini memungkinkan pemetaan melalui aliran. Fungsi fn akan dipanggil untuk setiap potongan dalam aliran. Jika fungsi fn mengembalikan promise - promise tersebut akan ed awaitsebelum diteruskan ke aliran hasil.

function map(fn: (data: any, options?: Abortable) => any, options?: ReadableOperatorOptions): Readable

Parameter

fn

(data: any, options?: Abortable) => any

Fungsi untuk memetakan setiap potongan dalam aliran. Asinkron atau tidak.

options

ReadableOperatorOptions

Mengembalikan

aliran yang dipetakan dengan fungsi fn.

off(string | symbol, (args: any[]) => void)

function off(eventName: string | symbol, listener: (args: any[]) => void): Readable

Parameter

eventName

string | symbol

listener

(args: any[]) => void

Mengembalikan

off<E>(E, (args: ReadableEventMap[E]) => void)

function off<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

Parameter

eventName

E

listener

(args: ReadableEventMap[E]) => void

Mengembalikan

on(string | symbol, (args: any[]) => void)

function on(eventName: string | symbol, listener: (args: any[]) => void): Readable

Parameter

eventName

string | symbol

listener

(args: any[]) => void

Mengembalikan

on<E>(E, (args: ReadableEventMap[E]) => void)

function on<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

Parameter

eventName

E

listener

(args: ReadableEventMap[E]) => void

Mengembalikan

once(string | symbol, (args: any[]) => void)

function once(eventName: string | symbol, listener: (args: any[]) => void): Readable

Parameter

eventName

string | symbol

listener

(args: any[]) => void

Mengembalikan

once<E>(E, (args: ReadableEventMap[E]) => void)

function once<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

Parameter

eventName

E

listener

(args: ReadableEventMap[E]) => void

Mengembalikan

pause()

Metode ini readable.pause() akan menyebabkan aliran dalam mode mengalir berhenti memancarkan 'data' peristiwa, beralih dari mode mengalir. Data apa pun yang tersedia akan tetap berada di buffer internal.

const readable = getReadableStreamSomehow();
readable.on('data', (chunk) => {
  console.log(`Received ${chunk.length} bytes of data.`);
  readable.pause();
  console.log('There will be no additional data for 1 second.');
  setTimeout(() => {
    console.log('Now data will start flowing again.');
    readable.resume();
  }, 1000);
});

Metode ini readable.pause() tidak berpengaruh jika ada 'readable' pendengar peristiwa.

function pause(): Readable

Mengembalikan

prependListener(string | symbol, (args: any[]) => void)

function prependListener(eventName: string | symbol, listener: (args: any[]) => void): Readable

Parameter

eventName

string | symbol

listener

(args: any[]) => void

Mengembalikan

prependListener<E>(E, (args: ReadableEventMap[E]) => void)

function prependListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

Parameter

eventName

E

listener

(args: ReadableEventMap[E]) => void

Mengembalikan

prependOnceListener(string | symbol, (args: any[]) => void)

function prependOnceListener(eventName: string | symbol, listener: (args: any[]) => void): Readable

Parameter

eventName

string | symbol

listener

(args: any[]) => void

Mengembalikan

prependOnceListener<E>(E, (args: ReadableEventMap[E]) => void)

function prependOnceListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

Parameter

eventName

E

listener

(args: ReadableEventMap[E]) => void

Mengembalikan

push(any, BufferEncoding)

function push(chunk: any, encoding?: BufferEncoding): boolean

Parameter

chunk

any

encoding

BufferEncoding

Mengembalikan

boolean

rawListeners(string | symbol)

function rawListeners(eventName: string | symbol): (args: any[]) => void[]

Parameter

eventName

string | symbol

Mengembalikan

(args: any[]) => void[]

rawListeners<E>(E)

function rawListeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]

Parameter

eventName

E

Mengembalikan

(args: ReadableEventMap[E]) => void[]

read(number)

Metode ini readable.read() membaca data dari buffer internal dan mengembalikannya. Jika tidak ada data yang tersedia untuk dibaca, dikembalikan. null Secara default, data dikembalikan sebagai Buffer objek kecuali pengkodean telah ditentukan menggunakan metode atau readable.setEncoding() aliran beroperasi dalam mode objek.

Argumen opsional size menentukan jumlah byte tertentu untuk dibaca. Jika size byte tidak tersedia untuk dibaca, null akan dikembalikan kecuali aliran telah berakhir, dalam hal ini semua data yang tersisa di buffer internal akan dikembalikan.

Jika size argumen tidak ditentukan, semua data yang terkandung dalam buffer internal akan dikembalikan.

Argumen size harus kurang dari atau sama dengan 1 GiB.

Metode ini readable.read() hanya boleh dipanggil pada Readable aliran yang beroperasi dalam mode dijeda. Dalam mode mengalir, readable.read() dipanggil secara otomatis sampai buffer internal benar-benar terkuras.

const readable = getReadableStreamSomehow();

// 'readable' may be triggered multiple times as data is buffered in
readable.on('readable', () => {
  let chunk;
  console.log('Stream is readable (new data received in buffer)');
  // Use a loop to make sure we read all currently available data
  while (null !== (chunk = readable.read())) {
    console.log(`Read ${chunk.length} bytes of data...`);
  }
});

// 'end' will be triggered once when there is no more data available
readable.on('end', () => {
  console.log('Reached end of stream.');
});

Setiap panggilan ke readable.read() mengembalikan potongan data, atau null. Potongan-potongan itu tidak tergabung. Perulangan while diperlukan untuk menggunakan semua data yang saat ini berada di buffer. Saat membaca file .read() besar dapat mengembalikan null, setelah mengkonsumsi semua konten buffer sejauh ini, tetapi masih ada lebih banyak data yang akan datang belum buffer. Dalam hal ini, peristiwa baru 'readable' akan dipancarkan ketika ada lebih banyak data di buffer. Akhirnya 'end' event akan dipancarkan ketika tidak ada lagi data yang akan datang.

Oleh karena itu, untuk membaca seluruh konten file dari readable, perlu untuk mengumpulkan potongan di beberapa 'readable' peristiwa:

const chunks = [];

readable.on('readable', () => {
  let chunk;
  while (null !== (chunk = readable.read())) {
    chunks.push(chunk);
  }
});

readable.on('end', () => {
  const content = chunks.join('');
});

Aliran Readable dalam mode objek akan selalu mengembalikan satu item dari panggilan ke readable.read(size), terlepas dari nilai size argumen.

Jika metode mengembalikan readable.read() sebagian data, 'data' peristiwa juga akan dipancarkan.

Panggilan yang dibaca setelah 'end' peristiwa dipancarkan akan kembali null. Tidak ada kesalahan runtime yang akan diangkat.

function read(size?: number): any

Parameter

size

number

Argumen opsional untuk menentukan berapa banyak data yang akan dibaca.

Mengembalikan

any

reduce<T>((previous: any, data: any, options?: Abortable) => T)

Metode ini memanggil fn pada setiap potongan aliran secara berurutan, meneruskannya hasil dari perhitungan pada elemen sebelumnya. Ini mengembalikan janji untuk nilai akhir pengurangan.

Jika tidak ada nilai awal yang disediakan, potongan pertama aliran digunakan sebagai nilai awal. Jika aliran kosong, janji ditolak dengan properti dengan TypeErrorERR_INVALID_ARGS kode.

Fungsi peredam mengulangi elemen aliran demi elemen yang berarti tidak ada parameter konkurensi atau paralelisme. Untuk melakukan pengurangan secara bersamaan, Anda dapat mengekstrak fungsi asinkron ke readable.map metode.

function reduce<T>(fn: (previous: any, data: any, options?: Abortable) => T): Promise<T>

Parameter

fn

(previous: any, data: any, options?: Abortable) => T

fungsi peredam untuk memanggil setiap potongan dalam aliran. Asinkron atau tidak.

Mengembalikan

Promise<T>

janji untuk nilai akhir pengurangan.

reduce<T>((previous: T, data: any, options?: Abortable) => T, T, Abortable)

function reduce<T>(fn: (previous: T, data: any, options?: Abortable) => T, initial: T, options?: Abortable): Promise<T>

Parameter

fn

(previous: T, data: any, options?: Abortable) => T

initial

T

options

Abortable

Mengembalikan

Promise<T>

removeAllListeners(string | symbol)

function removeAllListeners(eventName?: string | symbol): Readable

Parameter

eventName

string | symbol

Mengembalikan

removeAllListeners<E>(E)

function removeAllListeners<E>(eventName?: E): Readable

Parameter

eventName

E

Mengembalikan

removeListener(string | symbol, (args: any[]) => void)

function removeListener(eventName: string | symbol, listener: (args: any[]) => void): Readable

Parameter

eventName

string | symbol

listener

(args: any[]) => void

Mengembalikan

removeListener<E>(E, (args: ReadableEventMap[E]) => void)

function removeListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

Parameter

eventName

E

listener

(args: ReadableEventMap[E]) => void

Mengembalikan

resume()

Metode ini readable.resume() menyebabkan aliran yang dijeda Readable secara eksplisit untuk melanjutkan peristiwa pemancaran 'data' , mengalihkan aliran ke mode mengalir.

Metode ini readable.resume() dapat digunakan untuk sepenuhnya mengonsumsi data dari aliran tanpa benar-benar memproses data tersebut:

getReadableStreamSomehow()
  .resume()
  .on('end', () => {
    console.log('Reached the end, but did not read anything.');
  });

Metode ini readable.resume() tidak berpengaruh jika ada 'readable' pendengar peristiwa.

function resume(): Readable

Mengembalikan

setEncoding(BufferEncoding)

Metode ini readable.setEncoding() mengatur pengkodean karakter untuk data yang dibaca dari Readable aliran.

Secara default, tidak ada pengkodean yang ditetapkan dan data aliran akan dikembalikan sebagai Buffer objek. Mengatur pengodean menyebabkan data aliran dikembalikan sebagai string pengodean yang ditentukan, bukan sebagai Buffer objek. Misalnya, memanggil readable.setEncoding('utf8') akan menyebabkan data output ditafsirkan sebagai data UTF-8, dan diteruskan sebagai string. Memanggil readable.setEncoding('hex') akan menyebabkan data dikodekan dalam format string heksadesimal.

Aliran Readable akan menangani karakter multi-byte yang dikirimkan melalui aliran dengan benar yang akan didekodekan secara tidak benar jika hanya ditarik dari aliran sebagai Buffer objek.

const readable = getReadableStreamSomehow();
readable.setEncoding('utf8');
readable.on('data', (chunk) => {
  assert.equal(typeof chunk, 'string');
  console.log('Got %d characters of string data:', chunk.length);
});
function setEncoding(encoding: BufferEncoding): Readable

Parameter

encoding

BufferEncoding

Pengodean yang akan digunakan.

Mengembalikan

some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

Metode ini mirip dengan Array.prototype.some dan memanggil fn pada setiap potongan dalam aliran hingga nilai pengembalian yang ditunggu-tunggu adalah true (atau nilai kebenaran apa pun). Setelah panggilan fn pada awaitnilai pengembalian chunk ed benar, aliran dihancurkan dan janji dipenuhi dengan true. Jika tidak ada panggilan fn pada potongan yang mengembalikan nilai yang benar, janji itu dipenuhi dengan false.

function some(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<boolean>

Parameter

fn

(data: any, options?: Abortable) => boolean | Promise<boolean>

fungsi untuk memanggil setiap bagian aliran. Asinkron atau tidak.

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

Mengembalikan

Promise<boolean>

Janji yang mengevaluasi jika trueFN mengembalikan nilai kebenaran untuk setidaknya satu potongan.

take(number, Abortable)

Metode ini mengembalikan aliran baru dengan potongan batas pertama.

function take(limit: number, options?: Abortable): Readable

Parameter

limit

number

jumlah potongan yang akan diambil dari yang dapat dibaca.

options

Abortable

Mengembalikan

aliran dengan potongan batas yang diambil.

toArray(Abortable)

Metode ini memungkinkan dengan mudah mendapatkan konten aliran.

Karena metode ini membaca seluruh aliran ke dalam memori, metode ini meniadakan manfaat aliran. Ini ditujukan untuk interoperabilitas dan kenyamanan, bukan sebagai cara utama untuk mengonsumsi streaming.

function toArray(options?: Abortable): Promise<any[]>

Parameter

options

Abortable

Mengembalikan

Promise<any[]>

Janji yang berisi array dengan konten aliran.

toWeb(ReadableStream, ReadableToWebOptions)

Metode utilitas untuk membuat web ReadableStream dari .Readable

static function toWeb(streamReadable: ReadableStream, options?: ReadableToWebOptions): ReadableStream<any>

Parameter

streamReadable

ReadableStream

options

ReadableToWebOptions

Mengembalikan

ReadableStream<any>

unpipe(WritableStream)

Metode ini readable.unpipe() melepaskan aliran yang Writable sebelumnya terpasang menggunakan metode pipa .

Jika tidak destination ditentukan, maka semua pipa terlepas.

Jika ditentukan destination , tetapi tidak ada pipa yang disiapkan untuk itu, maka metode tersebut tidak melakukan apa-apa.

import fs from 'node:fs';
const readable = getReadableStreamSomehow();
const writable = fs.createWriteStream('file.txt');
// All the data from readable goes into 'file.txt',
// but only for the first second.
readable.pipe(writable);
setTimeout(() => {
  console.log('Stop writing to file.txt.');
  readable.unpipe(writable);
  console.log('Manually close the file stream.');
  writable.end();
}, 1000);
function unpipe(destination?: WritableStream): Readable

Parameter

destination

WritableStream

Aliran khusus opsional untuk membuka pipa

Mengembalikan

unshift(any, BufferEncoding)

Melewati chunk sebagai null sinyal akhir aliran (EOF) dan berperilaku sama dengan readable.push(null), setelah itu tidak ada lagi data yang dapat ditulis. Sinyal EOF diletakkan di ujung buffer dan data buffer apa pun akan tetap disiram.

Metode ini readable.unshift() mendorong sebagian data kembali ke buffer internal. Ini berguna dalam situasi tertentu di mana aliran dikonsumsi oleh kode yang perlu "membatalkan konsumsi" sejumlah data yang telah ditarik secara optimis dari sumbernya, sehingga data dapat diteruskan ke pihak lain.

Metode ini stream.unshift(chunk) tidak dapat dipanggil setelah 'end' peristiwa dipancarkan atau kesalahan runtime akan dilemparkan.

Pengembang yang sering menggunakan stream.unshift() harus mempertimbangkan untuk beralih ke penggunaan Transform aliran sebagai gantinya. Lihat bagian untuk API for stream implementers informasi lebih lanjut.

// Pull off a header delimited by \n\n.
// Use unshift() if we get too much.
// Call the callback with (error, header, stream).
import { StringDecoder } from 'node:string_decoder';
function parseHeader(stream, callback) {
  stream.on('error', callback);
  stream.on('readable', onReadable);
  const decoder = new StringDecoder('utf8');
  let header = '';
  function onReadable() {
    let chunk;
    while (null !== (chunk = stream.read())) {
      const str = decoder.write(chunk);
      if (str.includes('\n\n')) {
        // Found the header boundary.
        const split = str.split(/\n\n/);
        header += split.shift();
        const remaining = split.join('\n\n');
        const buf = Buffer.from(remaining, 'utf8');
        stream.removeListener('error', callback);
        // Remove the 'readable' listener before unshifting.
        stream.removeListener('readable', onReadable);
        if (buf.length)
          stream.unshift(buf);
        // Now the body of the message can be read from the stream.
        callback(null, header, stream);
        return;
      }
      // Still reading the header.
      header += str;
    }
  }
}

Tidak seperti push, stream.unshift(chunk) tidak akan mengakhiri proses membaca dengan mengatur ulang status pembacaan internal aliran. Hal ini dapat menyebabkan hasil yang tidak terduga jika readable.unshift() dipanggil selama pembacaan (yaitu dari dalam implementasi _read pada aliran kustom). Mengikuti panggilan ke readable.unshift() dengan dorongan langsung akan mengatur ulang status pembacaan dengan tepat, namun yang terbaik adalah menghindari panggilan readable.unshift() saat dalam proses melakukan pembacaan.

function unshift(chunk: any, encoding?: BufferEncoding)

Parameter

chunk

any

Potongan data untuk dihapus ke antrean baca. Untuk aliran yang tidak beroperasi dalam mode objek, chunk harus berupa {string}, {Buffer}, {TypedArray}, {DataView} atau null. Untuk aliran mode objek, chunk mungkin berupa nilai JavaScript apa pun.

encoding

BufferEncoding

Pengkodean potongan string. Harus berupa pengkodean yang valid Buffer , seperti 'utf8' atau 'ascii'.

wrap(ReadableStream)

Sebelum Node.js 0.10, streaming tidak mengimplementasikan seluruh node:stream API modul seperti yang ditentukan saat ini. (Lihat Compatibility untuk informasi lebih lanjut.)

Saat menggunakan pustaka Node.js lama yang memancarkan 'data' peristiwa dan memiliki metode jeda yang hanya bersifat pemberitahuan, metode tersebut readable.wrap() dapat digunakan untuk membuat Readable aliran yang menggunakan aliran lama sebagai sumber datanya.

Jarang perlu digunakan readable.wrap() tetapi metode ini telah disediakan sebagai kenyamanan untuk berinteraksi dengan aplikasi dan perpustakaan Node.js lama.

import { OldReader } from './old-api-module.js';
import { Readable } from 'node:stream';
const oreader = new OldReader();
const myReader = new Readable().wrap(oreader);

myReader.on('readable', () => {
  myReader.read(); // etc.
});
function wrap(stream: ReadableStream): Readable

Parameter

stream

ReadableStream

Aliran "gaya lama" yang dapat dibaca

Mengembalikan

[asyncIterator]()

function [asyncIterator](): AsyncIterator<any, undefined, any>

Mengembalikan

AsyncIterator<any, undefined, any>

AsyncIterator untuk mengkonsumsi aliran sepenuhnya.

[toAsyncStreamable]()

Saat --experimental-stream-iter bendera diaktifkan, Readable streaming mengimplementasikan Stream.toAsyncStreamable protokol, memungkinkan konsumsi yang efisien oleh stream/iter API.

Ini menyediakan iterator asinkron batch yang menguras buffer internal aliran ke dalam Uint8Array[] batch, mengamortisasi overhead Promise per potongan dari jalur standar Symbol.asyncIterator . Untuk aliran mode byte, potongan dihasilkan secara langsung sebagai Buffer instans (yang merupakan Uint8Array subkelas). Untuk aliran mode objek atau yang dikodekan, setiap potongan dinormalisasi sebelum Uint8Array pengelompokan.

Iterator yang dikembalikan ditandai sebagai sumber yang divalidasi, sehingga from() melewatinya tanpa normalisasi tambahan.

import { Readable } from 'node:stream';
import { text, from } from 'node:stream/iter';

const readable = new Readable({
  read() { this.push('hello'); this.push(null); },
});

// Readable is automatically consumed via toAsyncStreamable
console.log(await text(from(readable))); // 'hello'

Tanpa --experimental-stream-iter bendera, memanggil metode ini melempar ERR_STREAM_ITER_MISSING_FLAG.

function [toAsyncStreamable](): ByteReadableStream

Mengembalikan

ByteReadableStream

Detail Metode yang Diwarisi

eventNames()

Mengembalikan array yang mencantumkan peristiwa di mana pemancar telah mendaftarkan pendengar.

import { EventEmitter } from 'node:events';

const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});

const sym = Symbol('symbol');
myEE.on(sym, () => {});

console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]
function eventNames(): (string | symbol)[]

Mengembalikan

(string | symbol)[]

Diwarisi dari Stream.eventNames

getMaxListeners()

Mengembalikan nilai pendengar maks saat ini untuk EventEmitter yang diatur oleh emitter.setMaxListeners(n) atau default ke events.defaultMaxListeners.

function getMaxListeners(): number

Mengembalikan

number

Diwarisi dari Stream.getMaxPendengar

pipe<T>(T, PipeOptions)

function pipe<T>(destination: T, options?: PipeOptions): T

Parameter

destination

T

options

PipeOptions

Mengembalikan

T

Diwarisi dari Stream.pipe

setMaxListeners(number)

Secara default EventEmitterakan mencetak peringatan jika lebih dari 10 pendengar ditambahkan untuk peristiwa tertentu. Ini adalah default yang berguna yang membantu menemukan kebocoran memori. Metode emitter.setMaxListeners() memungkinkan batas untuk dimodifikasi untuk instans EventEmitter spesifik ini. Nilai dapat diatur ke Infinity (atau 0) untuk menunjukkan jumlah listener yang tidak terbatas.

Mengembalikan referensi ke EventEmitter, sehingga panggilan dapat ditautkan.

function setMaxListeners(n: number): Readable

Parameter

n

number

Mengembalikan

Diwarisi dari Stream.setMaxPendengar

[captureRejectionSymbol](Error, string | symbol, any[])

Metode ini Symbol.for('nodejs.rejection') dipanggil jika penolakan janji terjadi saat memancarkan peristiwa dan captureRejections diaktifkan pada emitor. Dimungkinkan untuk digunakan events.captureRejectionSymbol sebagai pengganti Symbol.for('nodejs.rejection').

import { EventEmitter, captureRejectionSymbol } from 'node:events';

class MyClass extends EventEmitter {
  constructor() {
    super({ captureRejections: true });
  }

  [captureRejectionSymbol](err, event, ...args) {
    console.log('rejection happened for', event, 'with', err, ...args);
    this.destroy(err);
  }

  destroy(err) {
    // Tear the resource down here.
  }
}
function [captureRejectionSymbol](error: Error, event: string | symbol, args: any[])

Parameter

error

Error

event

string | symbol

args

any[]

Diwarisi dari Stream.__@captureRejectionSymbol@180