Readable class
- Extends
-
Stream
Costruttori
| Readable(Readable |
Proprietà
| closed | È |
| destroyed | È |
| errored | Restituisce errore se il flusso è stato distrutto con un errore. |
| readable | È |
| readable |
Restituisce se il flusso è stato distrutto o ha commesso un errore prima di emettere |
| readable |
Restituisce se |
| readable |
Getter per la proprietà |
| readable |
Diventa |
| readable |
Questa proprietà riflette lo stato attuale di un |
| readable |
Restituisce il valore di |
| readable |
Questa proprietà contiene il numero di byte (o oggetti) nella coda pronti per essere letti. Il valore fornisce dati di introspezione riguardanti lo |
| readable |
Getter per la proprietà |
Metodi
| add |
|
| add |
|
| compose(Writable |
Questo metodo consente anche di fornire un Per altre informazioni, vedere |
| destroy(Error) | Distruggi il flusso. Opzionalmente emetti un Una volta Gli implementatori non dovrebbero sovrascrivere questo metodo, ma implementare |
| drop(number, Abortable) | Questo metodo restituisce un nuovo flusso con i primi blocchi di limite eliminati dall'inizio. |
| emit(string | symbol, any[]) | |
| emit<E>(E, Readable |
|
| every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
Questo metodo è simile a |
| filter((data: any, options?: Abortable) => boolean | Promise<boolean>, Readable |
Questo metodo permette di filtrare il flusso. Per ogni chunk del flusso verrà chiamata la funzione fn e se restituisce un valore truthy, il chunk verrà passato al flusso risultato.
Se la funzione fn restituisce una promessa, quella promessa sarà |
| find((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
|
| find<T>((data: any, options?: Abortable) => data, Pick<Readable |
Questo metodo è simile a |
| flat |
Questo metodo restituisce un nuovo flusso applicando il callback dato a ogni blocco del flusso e poi appiattendo il risultato. È possibile restituire uno stream o un altro iterabile o asincrono da fn e i flussi risultanti verranno uniti (appiattiti) nel flusso restituito. |
| for |
Questo metodo permette di iterare un flusso. Per ogni chunk del flusso verrà chiamata la funzione fn .
Se la funzione fn restituisce una promessa, quella promessa sarà Questo metodo è diverso dai Questo metodo è diverso dall'ascoltare l'evento |
| from(Iterable<any> | Async |
Un metodo di utilità per creare flussi leggibili da iteratori. |
| from |
Un metodo di utilità per creare un |
| is |
Restituisce sia che lo stream sia stato letto o cancellato. |
| is |
Il
|
| iterator(Readable |
L'iteratore creato da questo metodo offre agli utenti l'opzione di annullare la distruzione del flusso se il |
| listener |
|
| listener |
|
| listeners(string | symbol) | |
| listeners<E>(E) | |
| map((data: any, options?: Abortable) => any, Readable |
Questo metodo consente la mappatura sul flusso. La funzione fn verrà chiamata per ogni blocco del flusso.
Se la funzione fn restituisce una promessa, quella promessa sarà |
| off(string | symbol, (args: any[]) => void) | |
| off<E>(E, (args: Readable |
|
| on(string | symbol, (args: any[]) => void) | |
| on<E>(E, (args: Readable |
|
| once(string | symbol, (args: any[]) => void) | |
| once<E>(E, (args: Readable |
|
| pause() | Il
Il |
| prepend |
|
| prepend |
|
| prepend |
|
| prepend |
|
| push(any, Buffer |
|
| raw |
|
| raw |
|
| read(number) | Il L'argomento opzionale Se l'argomento L'argomento Il
Ogni chiamata a Pertanto, per leggere l'intero contenuto di un file da un
Se il
Chiamando la lettura dopo che l'evento |
| reduce<T>((previous: any, data: any, options?: Abortable) => T) | Questo metodo chiama fn su ogni blocco del flusso in ordine, passandogli il risultato del calcolo sull'elemento precedente. Restituisce una promessa per il valore finale della riduzione. Se non viene fornito alcun valore iniziale , il primo blocco del flusso viene utilizzato come valore iniziale.
Se il flusso è vuoto, la promessa viene respinta con una La funzione riduttore itera il flusso elemento per elemento, il che significa che non esiste un parametro di concorrenza o parallelismo. Per eseguire una riduzione simultanea, puoi estrarre la funzione asincrona al |
| reduce<T>((previous: T, data: any, options?: Abortable) => T, T, Abortable) | |
| remove |
|
| remove |
|
| remove |
|
| remove |
|
| resume() | Il Il
Il |
| set |
Il Per impostazione predefinita, non viene assegnata alcuna codifica e i dati del flusso verranno restituiti come Lo
|
| some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
Questo metodo è simile a |
| take(number, Abortable) | Questo metodo restituisce un nuovo flusso con i primi blocchi di limite . |
| to |
Questo metodo consente di ottenere facilmente il contenuto di un flusso. Poiché questo metodo legge l'intero flusso in memoria, annulla i benefici dei flusso. È pensato per l'interoperabilità e la comodità, non come il modo principale per consumare stream. |
| to |
Un metodo di utilità per creare una rete |
| unpipe(Writable |
Il Se il Se il
|
| unshift(any, Buffer |
Passando Il Il Gli sviluppatori che usano
A differenza del push, |
| wrap(Readable |
Prima di Node.js 0.10, gli stream non implementavano l'intera Quando si utilizza una libreria Node.js più vecchia che emette Raramente sarà necessario utilizzarlo
|
| [async |
Metodi ereditati
| event |
Restituisce una matrice che elenca gli eventi per i quali l'emettitore ha registrato listener.
|
| get |
Restituisce il valore massimo del listener corrente per il |
| pipe<T>(T, Pipe |
|
| set |
Per impostazione predefinita, Restituisce un riferimento alla |
| [capture |
Il
|
Dettagli costruttore
Readable(ReadableOptions<Readable>)
Dettagli proprietà
closed
È true dopo 'close' che è stato emesso.
closed: boolean
Valore della proprietà
boolean
destroyed
È true dopo readable.destroy() che è stato chiamato.
destroyed: boolean
Valore della proprietà
boolean
errored
Restituisce errore se il flusso è stato distrutto con un errore.
errored: null | Error
Valore della proprietà
null | Error
readable
È true se è sicuro chiamare read, il che significa che il flusso non è stato distrutto o emesso 'error' o 'end'.
readable: boolean
Valore della proprietà
boolean
readableAborted
Restituisce se il flusso è stato distrutto o ha commesso un errore prima di emettere 'end'.
readableAborted: boolean
Valore della proprietà
boolean
readableDidRead
Restituisce se 'data' è stato emesso.
readableDidRead: boolean
Valore della proprietà
boolean
readableEncoding
Getter per la proprietà encoding di un dato Readable ruscello. La encoding proprietà può essere impostata usando il metodo setEncoding .
readableEncoding: null | BufferEncoding
Valore della proprietà
null | BufferEncoding
readableEnded
Diventa true quando 'end' viene emesso un evento.
readableEnded: boolean
Valore della proprietà
boolean
readableFlowing
Questa proprietà riflette lo stato attuale di un Readable corso d'acqua come descritto nella sezione dei Tre stati .
readableFlowing: null | boolean
Valore della proprietà
null | boolean
readableHighWaterMark
Restituisce il valore di highWaterMark passato quando si crea questo Readable.
readableHighWaterMark: number
Valore della proprietà
number
readableLength
Questa proprietà contiene il numero di byte (o oggetti) nella coda pronti per essere letti. Il valore fornisce dati di introspezione riguardanti lo highWaterMarkstato del .
readableLength: number
Valore della proprietà
number
readableObjectMode
Getter per la proprietà objectMode di un dato Readable ruscello.
readableObjectMode: boolean
Valore della proprietà
boolean
Dettagli metodo
addListener(string | symbol, (args: any[]) => void)
function addListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametri
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Valori restituiti
addListener<E>(E, (args: ReadableEventMap[E]) => void)
function addListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametri
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Valori restituiti
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) è pari a stream.compose(readable, s).
Questo metodo consente anche di fornire un AbortSignal , che distruggerà il flusso composto se abortito.
Per altre informazioni, vedere stream.compose(...streams).
function compose(stream: WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void, options?: Abortable): Duplex
Parametri
- stream
-
WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void
- options
-
Abortable
Valori restituiti
Duplex
un flusso composto dal flusso stream.
destroy(Error)
Distruggi il flusso. Opzionalmente emetti un 'error' evento e un 'close' evento (a meno che emitClose non sia impostato su false). Dopo questa chiamata, il flusso leggibile rilascia tutte le risorse interne e le chiamate successive push() verranno ignorate.
Una volta destroy() chiamata, eventuali ulteriori chiamate saranno no-op e non possono essere emessi 'error'altri errori tranne da _destroy() .
Gli implementatori non dovrebbero sovrascrivere questo metodo, ma implementare readable._destroy()invece .
function destroy(error?: Error): Readable
Parametri
- error
-
Error
Errore che verrà passato come payload in 'error' caso
Valori restituiti
drop(number, Abortable)
Questo metodo restituisce un nuovo flusso con i primi blocchi di limite eliminati dall'inizio.
function drop(limit: number, options?: Abortable): Readable
Parametri
- limit
-
number
il numero di blocchi da eliminare dal leggibile.
- options
-
Abortable
Valori restituiti
un flusso con i blocchi limite eliminati dall'inizio.
emit(string | symbol, any[])
function emit(eventName: string | symbol, args: any[]): boolean
Parametri
- eventName
-
string | symbol
- args
-
any[]
Valori restituiti
boolean
emit<E>(E, ReadableEventMap[E])
function emit<E>(eventName: E, args: ReadableEventMap[E]): boolean
Parametri
- eventName
-
E
- args
-
ReadableEventMap[E]
Valori restituiti
boolean
every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Questo metodo è simile a Array.prototype.every and calls fn su ogni chunk dello stream per verificare se tutti i valori di ritorno attesi siano veri valori per fn. Una volta che una chiamata fn su un valore di ritorno ed a chunk awaitè falsa, il flusso viene distrutto e la promessa viene mantenuta con false.
Se tutte le chiamate fn sui chunks restituiscono un valore truthy, la promessa viene mantenuta con true.
function every(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<boolean>
Parametri
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
una funzione per chiamare ogni blocco del flusso. Asincrono o no.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Valori restituiti
Promise<boolean>
Una promessa che valuta se trueFN restituisse un valore truthy per ciascuno dei blocchi.
filter((data: any, options?: Abortable) => boolean | Promise<boolean>, ReadableOperatorOptions)
Questo metodo permette di filtrare il flusso. Per ogni chunk del flusso verrà chiamata la funzione fn e se restituisce un valore truthy, il chunk verrà passato al flusso risultato.
Se la funzione fn restituisce una promessa, quella promessa sarà awaited.
function filter(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: ReadableOperatorOptions): Readable
Parametri
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
una funzione per filtrare i blocchi dal flusso. Asincrono o no.
- options
-
ReadableOperatorOptions
Valori restituiti
un flusso filtrato con il predicato 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>
Parametri
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Valori restituiti
Promise<any>
find<T>((data: any, options?: Abortable) => data, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Questo metodo è simile a Array.prototype.find e chiama fn su ogni chunk del flusso per trovare un chunk con un valore truthy per fn. Una volta che il valore atteso di ritorno di una chiamata fn è truthy, lo stream viene distrutto e la promessa viene mantenuta con un valore per il quale fn ha restituito un valore truthy.
Se tutte le chiamate fn sui chunks restituiscono un valore falso, la promessa viene mantenuta con undefined.
function find<T>(fn: (data: any, options?: Abortable) => data, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<undefined | T>
Parametri
- fn
-
(data: any, options?: Abortable) => data
una funzione per chiamare ogni blocco del flusso. Asincrono o no.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Valori restituiti
Promise<undefined | T>
una promessa che valuta fino al primo blocco per cui FN valutato con un valore truthy, o undefined se non è stato trovato alcun elemento.
flatMap((data: any, options?: Abortable) => any, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Questo metodo restituisce un nuovo flusso applicando il callback dato a ogni blocco del flusso e poi appiattendo il risultato.
È possibile restituire uno stream o un altro iterabile o asincrono da fn e i flussi risultanti verranno uniti (appiattiti) nel flusso restituito.
function flatMap(fn: (data: any, options?: Abortable) => any, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Readable
Parametri
- fn
-
(data: any, options?: Abortable) => any
una funzione per mappare ogni blocco del flusso. Potrebbe essere asincrono. Potrebbe essere un getto o un generatore.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Valori restituiti
un flusso flat-mapped con la funzione fn.
forEach((data: any, options?: Abortable) => void | Promise<void>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Questo metodo permette di iterare un flusso. Per ogni chunk del flusso verrà chiamata la funzione fn .
Se la funzione fn restituisce una promessa, quella promessa sarà awaited.
Questo metodo è diverso dai for await...of loop in quanto può opzionalmente elaborare i chunk contemporaneamente.
Inoltre, un'iterazione forEach può essere fermata solo avendo superato un'opzione signal e abortendo l'AbortController correlato mentre for await...of può essere fermata con break o return.
In entrambi i casi il flusso verrà distrutto.
Questo metodo è diverso dall'ascoltare l'evento 'data' in quanto utilizza l'evento readable nella macchinaria sottostante e può limitare il numero di chiamate fn concorrenti.
function forEach(fn: (data: any, options?: Abortable) => void | Promise<void>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<void>
Parametri
- fn
-
(data: any, options?: Abortable) => void | Promise<void>
una funzione per chiamare ogni blocco del flusso. Asincrono o no.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Valori restituiti
Promise<void>
una promessa per quando la diretta sarà finita.
from(Iterable<any> | AsyncIterable<any>, ReadableOptions<Readable>)
Un metodo di utilità per creare flussi leggibili da iteratori.
static function from(iterable: Iterable<any> | AsyncIterable<any>, options?: ReadableOptions<Readable>): Readable
Parametri
- iterable
-
Iterable<any> | AsyncIterable<any>
Oggetto che implementa il Symbol.asyncIterator protocollo o Symbol.iterator iterabile. Emette un evento di 'errore' se viene passato un valore nullo.
- options
-
ReadableOptions<Readable>
Opzioni offerte a new stream.Readable([options]). Di default, Readable.from() sarà impostato options.objectMode a true, a meno che non venga esplicitamente escluso impostando options.objectMode .false
Valori restituiti
fromWeb(ReadableStream<any>, Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">)
Un metodo di utilità per creare un Readable da un web ReadableStream.
static function fromWeb(readableStream: ReadableStream<any>, options?: Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">): Readable
Parametri
- readableStream
-
ReadableStream<any>
- options
-
Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">
Valori restituiti
isDisturbed(ReadableStream<any> | ReadableStream)
Restituisce sia che lo stream sia stato letto o cancellato.
static function isDisturbed(stream: ReadableStream<any> | ReadableStream): boolean
Parametri
- stream
-
ReadableStream<any> | ReadableStream
Valori restituiti
boolean
isPaused()
Il readable.isPaused() metodo restituisce lo stato operativo corrente del Readable.
Questo è utilizzato principalmente dal meccanismo che sta alla base del readable.pipe() metodo.
Nella maggior parte dei casi tipici, non ci sarà motivo di utilizzare direttamente questo metodo.
const readable = new stream.Readable();
readable.isPaused(); // === false
readable.pause();
readable.isPaused(); // === true
readable.resume();
readable.isPaused(); // === false
function isPaused(): boolean
Valori restituiti
boolean
iterator(ReadableIteratorOptions)
L'iteratore creato da questo metodo offre agli utenti l'opzione di annullare la distruzione del flusso se il for await...of ciclo viene esposto da return, break, o throwse l'iteratore deve distruggere il flusso se il flusso ha emesso un errore durante l'iterazione.
function iterator(options?: ReadableIteratorOptions): AsyncIterator<any, undefined, any>
Parametri
- options
-
ReadableIteratorOptions
Valori restituiti
AsyncIterator<any, undefined, any>
listenerCount(string | symbol, (args: any[]) => void)
function listenerCount(eventName: string | symbol, listener?: (args: any[]) => void): number
Parametri
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Valori restituiti
number
listenerCount<E>(E, (args: ReadableEventMap[E]) => void)
function listenerCount<E>(eventName: E, listener?: (args: ReadableEventMap[E]) => void): number
Parametri
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Valori restituiti
number
listeners(string | symbol)
function listeners(eventName: string | symbol): (args: any[]) => void[]
Parametri
- eventName
-
string | symbol
Valori restituiti
(args: any[]) => void[]
listeners<E>(E)
function listeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]
Parametri
- eventName
-
E
Valori restituiti
(args: ReadableEventMap[E]) => void[]
map((data: any, options?: Abortable) => any, ReadableOperatorOptions)
Questo metodo consente la mappatura sul flusso. La funzione fn verrà chiamata per ogni blocco del flusso.
Se la funzione fn restituisce una promessa, quella promessa sarà awaited prima di essere passata al flusso di risultati.
function map(fn: (data: any, options?: Abortable) => any, options?: ReadableOperatorOptions): Readable
Parametri
- fn
-
(data: any, options?: Abortable) => any
una funzione per mappare ogni blocco del flusso. Asincrono o no.
- options
-
ReadableOperatorOptions
Valori restituiti
un flusso mappato con la funzione fn.
off(string | symbol, (args: any[]) => void)
function off(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametri
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Valori restituiti
off<E>(E, (args: ReadableEventMap[E]) => void)
function off<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametri
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Valori restituiti
on(string | symbol, (args: any[]) => void)
function on(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametri
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Valori restituiti
on<E>(E, (args: ReadableEventMap[E]) => void)
function on<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametri
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Valori restituiti
once(string | symbol, (args: any[]) => void)
function once(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametri
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Valori restituiti
once<E>(E, (args: ReadableEventMap[E]) => void)
function once<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametri
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Valori restituiti
pause()
Il readable.pause() metodo farà sì che un flusso in modalità di flusso smetta di emettere 'data' eventi, passando dalla modalità di scorrenza. Qualsiasi dato che diventi disponibile rimarrà nel buffer interno.
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);
});
Il readable.pause() metodo non ha effetto se c'è un 'readable' ascoltatore di eventi.
function pause(): Readable
Valori restituiti
prependListener(string | symbol, (args: any[]) => void)
function prependListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametri
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Valori restituiti
prependListener<E>(E, (args: ReadableEventMap[E]) => void)
function prependListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametri
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Valori restituiti
prependOnceListener(string | symbol, (args: any[]) => void)
function prependOnceListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametri
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Valori restituiti
prependOnceListener<E>(E, (args: ReadableEventMap[E]) => void)
function prependOnceListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametri
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Valori restituiti
push(any, BufferEncoding)
function push(chunk: any, encoding?: BufferEncoding): boolean
Parametri
- chunk
-
any
- encoding
-
BufferEncoding
Valori restituiti
boolean
rawListeners(string | symbol)
function rawListeners(eventName: string | symbol): (args: any[]) => void[]
Parametri
- eventName
-
string | symbol
Valori restituiti
(args: any[]) => void[]
rawListeners<E>(E)
function rawListeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]
Parametri
- eventName
-
E
Valori restituiti
(args: ReadableEventMap[E]) => void[]
read(number)
Il readable.read() metodo legge i dati dal buffer interno e li restituisce. Se non sono disponibili dati per la lettura, null viene restituito. Per impostazione predefinita, i dati vengono restituiti come Buffer oggetto a meno che non sia stata specificata una codifica usando il readable.setEncoding() metodo o che il flusso operi in modalità oggetto.
L'argomento opzionale size specifica un numero specifico di byte da leggere. Se size i byte non sono disponibili per la lettura, null verranno restituiti a meno che il flusso non sia terminato, nel qual caso tutti i dati rimasti nel buffer interno verranno restituiti.
Se l'argomento size non viene specificato, tutti i dati contenuti nel buffer interno verranno restituiti.
L'argomento size deve essere inferiore o uguale a 1 GiB.
Il readable.read() metodo dovrebbe essere chiamato solo su Readable flussi che operano in modalità pausa. In modalità fluida, readable.read() viene chiamata automaticamente finché il buffer interno non è completamente esaurito.
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.');
});
Ogni chiamata a readable.read() restituisce un blocco di dati, oppure null. I chunk non sono concatenati. È necessario un while ciclo per consumare tutti i dati attualmente nel buffer. Quando si legge un file .read() di grandi dimensioni può restituire null, avendo consumato tutto il contenuto bufferizzato finora, ma ci sono ancora altri dati non ancora bufferati. In questo caso verrà emesso un nuovo 'readable' evento quando ci sono più dati nel buffer. Infine, l'evento 'end' verrà emesso quando non ci saranno più dati in arrivo.
Pertanto, per leggere l'intero contenuto di un file da un readable, è necessario raccogliere blocchi su più 'readable' eventi:
const chunks = [];
readable.on('readable', () => {
let chunk;
while (null !== (chunk = readable.read())) {
chunks.push(chunk);
}
});
readable.on('end', () => {
const content = chunks.join('');
});
Readable Uno stream in modalità oggetto restituirà sempre un singolo elemento da una chiamata a readable.read(size), indipendentemente dal valore dell'argomentosize.
Se il readable.read() metodo restituisce un blocco di dati, verrà emesso anche un 'data' evento.
Chiamando la lettura dopo che l'evento 'end' è stato emesso restituirà null. Non verrà riportato alcun errore di runtime.
function read(size?: number): any
Parametri
- size
-
number
Argomento opzionale per specificare quanti dati leggere.
Valori restituiti
any
reduce<T>((previous: any, data: any, options?: Abortable) => T)
Questo metodo chiama fn su ogni blocco del flusso in ordine, passandogli il risultato del calcolo sull'elemento precedente. Restituisce una promessa per il valore finale della riduzione.
Se non viene fornito alcun valore iniziale , il primo blocco del flusso viene utilizzato come valore iniziale.
Se il flusso è vuoto, la promessa viene respinta con una TypeError con la ERR_INVALID_ARGS proprietà di codice.
La funzione riduttore itera il flusso elemento per elemento, il che significa che non esiste un parametro di concorrenza o parallelismo. Per eseguire una riduzione simultanea, puoi estrarre la funzione asincrona al readable.map metodo.
function reduce<T>(fn: (previous: any, data: any, options?: Abortable) => T): Promise<T>
Parametri
- fn
-
(previous: any, data: any, options?: Abortable) => T
una funzione riduttore per richiamare ogni blocco nel flusso. Asincrono o no.
Valori restituiti
Promise<T>
una promessa per il valore finale della riduzione.
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>
Parametri
- fn
-
(previous: T, data: any, options?: Abortable) => T
- initial
-
T
- options
-
Abortable
Valori restituiti
Promise<T>
removeAllListeners(string | symbol)
function removeAllListeners(eventName?: string | symbol): Readable
Parametri
- eventName
-
string | symbol
Valori restituiti
removeAllListeners<E>(E)
function removeAllListeners<E>(eventName?: E): Readable
Parametri
- eventName
-
E
Valori restituiti
removeListener(string | symbol, (args: any[]) => void)
function removeListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametri
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Valori restituiti
removeListener<E>(E, (args: ReadableEventMap[E]) => void)
function removeListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametri
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Valori restituiti
resume()
Il readable.resume() metodo fa sì che un flusso esplicitamente Readable in pausa riprenda a emettere 'data' eventi, passando il flusso in modalità fluente.
Il readable.resume() metodo può essere utilizzato per assorbire completamente i dati di un flusso senza elaborare effettivamente nessuno di quei dati:
getReadableStreamSomehow()
.resume()
.on('end', () => {
console.log('Reached the end, but did not read anything.');
});
Il readable.resume() metodo non ha effetto se c'è un 'readable' ascoltatore di eventi.
function resume(): Readable
Valori restituiti
setEncoding(BufferEncoding)
Il readable.setEncoding() metodo imposta la codifica dei caratteri per i dati letti dal Readable flusso.
Per impostazione predefinita, non viene assegnata alcuna codifica e i dati del flusso verranno restituiti come Buffer oggetti. Impostare una codifica fa sì che i dati del flusso vengano restituiti come stringhe della codifica specificata anziché come Buffer oggetti. Ad esempio, chiamare readable.setEncoding('utf8') i dati in uscita saranno interpretati come dati UTF-8 e passati come stringhe. Chiamare readable.setEncoding('hex') i dati viene codificato in formato di stringa esadecimale.
Lo Readable stream gestirà correttamente i caratteri multi-byte consegnati attraverso il flusso che altrimenti verrebbero decodificati in modo errato se semplicemente estratti dal flusso come Buffer oggetti.
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
Parametri
- encoding
-
BufferEncoding
Codifica da usare.
Valori restituiti
some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Questo metodo è simile a Array.prototype.some e chiama fn su ogni chunk dello stream fino a quando il valore di ritorno atteso non è true (o qualsiasi valore truthy). Una volta che una chiamata fn su un valore di ritorno ed a pezzi awaitè veritiere, il flusso viene distrutto e la promessa viene mantenuta con true.
Se nessuna delle chiamate di fn restituisce i chunks un valore truthy, la promessa viene mantenuta con false.
function some(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<boolean>
Parametri
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
una funzione per chiamare ogni blocco del flusso. Asincrono o no.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Valori restituiti
Promise<boolean>
Una promessa che valuta se trueFN ha restituito un valore truthy per almeno uno dei blocchi.
take(number, Abortable)
Questo metodo restituisce un nuovo flusso con i primi blocchi di limite .
function take(limit: number, options?: Abortable): Readable
Parametri
- limit
-
number
il numero di blocchi da prendere dal leggibili.
- options
-
Abortable
Valori restituiti
Un flusso con i blocchi limite occupati.
toArray(Abortable)
Questo metodo consente di ottenere facilmente il contenuto di un flusso.
Poiché questo metodo legge l'intero flusso in memoria, annulla i benefici dei flusso. È pensato per l'interoperabilità e la comodità, non come il modo principale per consumare stream.
function toArray(options?: Abortable): Promise<any[]>
Parametri
- options
-
Abortable
Valori restituiti
Promise<any[]>
una promessa contenente un array con il contenuto del flusso.
toWeb(ReadableStream, ReadableToWebOptions)
Un metodo di utilità per creare una rete ReadableStream da un Readable.
static function toWeb(streamReadable: ReadableStream, options?: ReadableToWebOptions): ReadableStream<any>
Parametri
- streamReadable
-
ReadableStream
- options
-
ReadableToWebOptions
Valori restituiti
ReadableStream<any>
unpipe(WritableStream)
Il readable.unpipe() metodo stacca un Writable getto precedentemente collegato utilizzando il metodo del tubo .
Se il destination non è specificato, allora tutti i tubi sono staccati.
Se il destination metodo è specificato, ma non è previsto alcun tubo per esso, allora il metodo non fa nulla.
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
Parametri
- destination
-
WritableStream
Flusso specifico opzionale per unpipe
Valori restituiti
unshift(any, BufferEncoding)
Passando chunk come null segnala la fine del flusso (EOF) e si comporta allo stesso modo di readable.push(null), dopo di che non possono più essere scritti dati. Il segnale EOF viene posizionato alla fine del buffer e qualsiasi dato bufferato verrà comunque svuotato.
Il readable.unshift() metodo spinge un blocco di dati indietro nel buffer interno. Questo è utile in alcune situazioni in cui uno stream viene consumato da codice che deve "dis-consumare" una certa quantità di dati che ha ottimisticamente estratto dalla sorgente, così che i dati possano essere trasmessi a un'altra parte.
Il stream.unshift(chunk) metodo non può essere chiamato dopo che l'evento 'end' è stato emesso, altrimenti verrà generato un errore di runtime.
Gli sviluppatori che usano stream.unshift() spesso dovrebbero considerare di passare invece a uno Transform streaming. Vedi la API for stream implementers sezione per maggiori informazioni.
// 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;
}
}
}
A differenza del push, stream.unshift(chunk) non interromperà il processo di lettura resettando lo stato interno del flusso di lettura.
Questo può causare risultati inaspettati se readable.unshift() viene chiamato durante una lettura (cioè dall'interno di una _read implementazione su uno stream personalizzato). Seguire la chiamata con readable.unshift() un push immediato azzererà lo stato di lettura in modo appropriato, tuttavia è meglio evitare di chiamare readable.unshift() mentre si effettua una lettura.
function unshift(chunk: any, encoding?: BufferEncoding)
Parametri
- chunk
-
any
Un blocco di dati da spostare sulla coda di lettura. Per i flussi che non operano in modalità oggetto, chunk devono essere una {string}, {Buffer}, {TypedArray}, {DataView} o null. Per i flussi in modalità oggetto, chunk può essere qualsiasi valore JavaScript.
- encoding
-
BufferEncoding
Codifica dei blocchi di stringa. Deve essere una codifica valida Buffer , come 'utf8' o 'ascii'.
wrap(ReadableStream)
Prima di Node.js 0.10, gli stream non implementavano l'intera node:stream API del modulo come è attualmente definita. (Vedi Compatibility per maggiori informazioni.)
Quando si utilizza una libreria Node.js più vecchia che emette 'data' eventi e ha un metodo di pausa solo consultivo, il readable.wrap() metodo può essere usato per creare un Readable flusso che utilizza il vecchio flusso come fonte dati.
Raramente sarà necessario utilizzarlo readable.wrap() , ma il metodo è stato fornito come comodità per interagire con applicazioni e librerie Node.js più vecchie.
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
Parametri
- stream
-
ReadableStream
Un flusso "vecchio stile" leggibile
Valori restituiti
[asyncIterator]()
function [asyncIterator](): AsyncIterator<any, undefined, any>
Valori restituiti
AsyncIterator<any, undefined, any>
AsyncIterator per consumare completamente il getto.
Dettagli dei metodi ereditati
eventNames()
Restituisce una matrice che elenca gli eventi per i quali l'emettitore ha registrato listener.
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)[]
Valori restituiti
(string | symbol)[]
Ereditato da Stream.eventNames
getMaxListeners()
Restituisce il valore massimo del listener corrente per il EventEmitter impostato da emitter.setMaxListeners(n) o per impostazione predefinita su events.defaultMaxListeners.
function getMaxListeners(): number
Valori restituiti
number
Ereditato da Stream.getMaxListeners
pipe<T>(T, PipeOptions)
function pipe<T>(destination: T, options?: PipeOptions): T
Parametri
- destination
-
T
- options
-
PipeOptions
Valori restituiti
T
Ereditato da Stream.pipe
setMaxListeners(number)
Per impostazione predefinita, EventEmitters visualizzerà un avviso se vengono aggiunti più di 10 listener per un determinato evento. Si tratta di un valore predefinito utile che consente di trovare perdite di memoria. Il metodo emitter.setMaxListeners() consente di modificare il limite per questa specifica istanza di EventEmitter. Il valore può essere impostato su Infinity (o 0) per indicare un numero illimitato di listener.
Restituisce un riferimento alla EventEmitter, in modo che le chiamate possano essere concatenati.
function setMaxListeners(n: number): Readable
Parametri
- n
-
number
Valori restituiti
Ereditato da Stream.setMaxAscoltatori
[captureRejectionSymbol](Error, string | symbol, any[])
Il Symbol.for('nodejs.rejection') metodo viene chiamato nel caso in cui si verifichi un rifiuto di promessa durante l'emissione di un evento ed captureRejections è abilitato sull'emettitore.
È possibile usarla events.captureRejectionSymbol al posto di 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[])
Parametri
- error
-
Error
- event
-
string | symbol
- args
-
any[]
Ereditato da Stream.__@captureRejectionSymbol@175