Readable class
- Extends
-
Stream
Constructores
| Readable(Readable |
Propiedades
| closed | Es |
| destroyed | Es |
| errored | Devuelve error si el flujo ha sido destruido con un error. |
| readable | Es |
| readable |
Devuelve si el flujo fue destruido o cometió un error antes de emitir |
| readable |
Devuelve si |
| readable |
Getter para la propiedad |
| readable |
Se convierte |
| readable |
Esta propiedad refleja el estado actual de un |
| readable |
Devuelve el valor de |
| readable |
Esta propiedad contiene el número de bytes (u objetos) en la cola listos para ser leídos. El valor proporciona datos de introspección sobre el estado de los |
| readable |
Getter para la propiedad |
Métodos
| add |
|
| add |
|
| compose(Writable |
Este método también permite proporcionar un Consulte |
| destroy(Error) | Destruye la secuencia. Opcionalmente emitir un Una vez Los implementadores no deben anular este método, sino implementar |
| drop(number, Abortable) | Este método devuelve un nuevo flujo con los primeros bloques límite eliminados desde el inicio. |
| emit(string | symbol, any[]) | |
| emit<E>(E, Readable |
|
| every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
Este método es similar a |
| filter((data: any, options?: Abortable) => boolean | Promise<boolean>, Readable |
Este método permite filtrar el chorro. Para cada chunk en el flujo se llamará la función fn y si devuelve un valor truthy, el chunk se pasará al flujo resultante.
Si la función fn devuelve una promesa, esa promesa será |
| find((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
|
| find<T>((data: any, options?: Abortable) => data, Pick<Readable |
Este método es similar a |
| flat |
Este método devuelve un nuevo flujo aplicando la callback dada a cada fragmento del flujo y luego aplanando el resultado. Es posible devolver un flujo u otro iterable iterable o asíncrono desde fn y los flujos resultantes se fusionarán (aplanarán) en el flujo devuelto. |
| for |
Este método permite iterar un flujo. Para cada fragmento en el flujo se llamará la función fn .
Si la función fn devuelve una promesa, esa promesa será Este método se diferencia de Este método es diferente de escuchar el |
| from(Iterable<any> | Async |
Un método de utilidad para crear flujos legibles a partir de iteradores. |
| from |
Un método de utilidad para crear un |
| is |
Retorna tanto si la transmisión ha sido leída como cancelada. |
| is |
El
|
| iterator(Readable |
El iterador creado por este método da a los usuarios la opción de cancelar la destrucción del flujo si el |
| listener |
|
| listener |
|
| listeners(string | symbol) | |
| listeners<E>(E) | |
| map((data: any, options?: Abortable) => any, Readable |
Este método permite mapear sobre el arroyo. La función fn se llamará para cada fragmento del flujo.
Si la función fn devuelve una promesa, esa promesa será |
| 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() | El
El |
| prepend |
|
| prepend |
|
| prepend |
|
| prepend |
|
| push(any, Buffer |
|
| raw |
|
| raw |
|
| read(number) | El El argumento opcional Si el El El
Cada llamada a Por lo tanto, para leer todo el contenido de un archivo desde un
Un Si el
Llamar leer después de que el |
| reduce<T>((previous: any, data: any, options?: Abortable) => T) | Este método llama a fn en cada fragmento del flujo en orden, pasándole el resultado del cálculo sobre el elemento anterior. Devuelve una promesa por el valor final de la reducción. Si no se proporciona un valor inicial , se utiliza el primer fragmento del flujo como valor inicial.
Si el flujo está vacío, la promesa se rechaza con una La función reductora itera el flujo elemento por elemento, lo que significa que no existe un parámetro de concurrencia ni paralelismo. Para realizar una reducción simultáneamente, puedes extraer la función asíncrona al |
| reduce<T>((previous: T, data: any, options?: Abortable) => T, T, Abortable) | |
| remove |
|
| remove |
|
| remove |
|
| remove |
|
| resume() | El El
El |
| set |
El Por defecto, no se asigna codificación y los datos del flujo se devolverán como El
|
| some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
Este método es similar a |
| take(number, Abortable) | Este método devuelve un nuevo flujo con los primeros bloques límite . |
| to |
Este método permite obtener fácilmente el contenido de un stream. Como este método lee todo el flujo en la memoria, anula los beneficios de los flujos. Está pensado para la interoperabilidad y la comodidad, no como la forma principal de consumir streams. |
| to |
Un método de utilidad para crear una web |
| unpipe(Writable |
El Si no se especifica el Si se especifica
|
| unshift(any, Buffer |
Pasar El El Los desarrolladores que usen
A diferencia del push, |
| wrap(Readable |
Antes de Node.js 0.10, los flujos no implementaban la API completa Cuando se utiliza una biblioteca de Node.js antigua que emite Rara vez será necesario usarlo
|
| [async |
Métodos heredados
| event |
Devuelve una matriz que enumera los eventos para los que el emisor ha registrado agentes de escucha.
|
| get |
Devuelve el valor máximo actual del agente de escucha para el |
| pipe<T>(T, Pipe |
|
| set |
De forma predeterminada, Devuelve una referencia al |
| [capture |
El
|
Detalles del constructor
Readable(ReadableOptions<Readable>)
Detalles de las propiedades
closed
Es true después 'close' de que se ha emitido.
closed: boolean
Valor de propiedad
boolean
destroyed
Es true después readable.destroy() de que se haya llamado.
destroyed: boolean
Valor de propiedad
boolean
errored
Devuelve error si el flujo ha sido destruido con un error.
errored: null | Error
Valor de propiedad
null | Error
readable
Es true si es seguro llamar a read, lo que significa que el flujo no ha sido destruido ni emitido 'error' o 'end'.
readable: boolean
Valor de propiedad
boolean
readableAborted
Devuelve si el flujo fue destruido o cometió un error antes de emitir 'end'.
readableAborted: boolean
Valor de propiedad
boolean
readableDidRead
Devuelve si 'data' ha sido emitido.
readableDidRead: boolean
Valor de propiedad
boolean
readableEncoding
Getter para la propiedad encoding de un arroyo dado Readable . La encoding propiedad puede establecerse usando el método setEncoding .
readableEncoding: null | BufferEncoding
Valor de propiedad
null | BufferEncoding
readableEnded
Se convierte true en cuando 'end' se emite el evento.
readableEnded: boolean
Valor de propiedad
boolean
readableFlowing
Esta propiedad refleja el estado actual de un Readable arroyo tal como se describe en la sección de los Tres estados .
readableFlowing: null | boolean
Valor de propiedad
null | boolean
readableHighWaterMark
Devuelve el valor de highWaterMark pasado al crear este Readable.
readableHighWaterMark: number
Valor de propiedad
number
readableLength
Esta propiedad contiene el número de bytes (u objetos) en la cola listos para ser leídos. El valor proporciona datos de introspección sobre el estado de los highWaterMark.
readableLength: number
Valor de propiedad
number
readableObjectMode
Getter para la propiedad objectMode de un arroyo dado Readable .
readableObjectMode: boolean
Valor de propiedad
boolean
Detalles del método
addListener(string | symbol, (args: any[]) => void)
function addListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parámetros
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Devoluciones
addListener<E>(E, (args: ReadableEventMap[E]) => void)
function addListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parámetros
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Devoluciones
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) equivale a stream.compose(readable, s).
Este método también permite proporcionar un AbortSignal , que destruirá el flujo compuesto cuando se aborte.
Consulte stream.compose(...streams) para obtener más información.
function compose(stream: WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void, options?: Abortable): Duplex
Parámetros
- stream
-
WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void
- options
-
Abortable
Devoluciones
Duplex
un arroyo compuesto por el arroyo stream.
destroy(Error)
Destruye la secuencia. Opcionalmente emitir un 'error' evento y emitir un 'close' evento (a menos que emitClose esté configurado en false). Tras esta llamada, el flujo legible liberará cualquier recurso interno y las llamadas push() posteriores serán ignoradas.
Una vez destroy() llamada, cualquier llamada adicional será un no-op y no se emitirán más errores excepto desde _destroy() .'error'
Los implementadores no deben anular este método, sino implementar readable._destroy().
function destroy(error?: Error): Readable
Parámetros
- error
-
Error
Error que se transmitirá como carga útil en 'error' caso de
Devoluciones
drop(number, Abortable)
Este método devuelve un nuevo flujo con los primeros bloques límite eliminados desde el inicio.
function drop(limit: number, options?: Abortable): Readable
Parámetros
- limit
-
number
el número de fragmentos que se pueden eliminar de lo legible.
- options
-
Abortable
Devoluciones
un stream con bloques límite que se cayó desde el principio.
emit(string | symbol, any[])
function emit(eventName: string | symbol, args: any[]): boolean
Parámetros
- eventName
-
string | symbol
- args
-
any[]
Devoluciones
boolean
emit<E>(E, ReadableEventMap[E])
function emit<E>(eventName: E, args: ReadableEventMap[E]): boolean
Parámetros
- eventName
-
E
- args
-
ReadableEventMap[E]
Devoluciones
boolean
every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Este método es similar a Array.prototype.every y llama a fn en cada chunk del flujo para comprobar si todos los valores de retorno esperados son un valor truthy para fn. Una vez que una llamada fn sobre un valor de retorno ed de chunk awaites falsa, el flujo se destruye y la promesa se cumple con false.
Si todas las llamadas de fn en los chunks devolven un valor truthy, la promesa se cumple con true.
function every(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<boolean>
Parámetros
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
una función para llamar a cada fragmento del flujo. Asincrónico o no.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Devoluciones
Promise<boolean>
Una promesa que evalúa si trueFN devolvió un valor de verdad para cada uno de los chunks.
filter((data: any, options?: Abortable) => boolean | Promise<boolean>, ReadableOperatorOptions)
Este método permite filtrar el chorro. Para cada chunk en el flujo se llamará la función fn y si devuelve un valor truthy, el chunk se pasará al flujo resultante.
Si la función fn devuelve una promesa, esa promesa será awaited.
function filter(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: ReadableOperatorOptions): Readable
Parámetros
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
una función para filtrar fragmentos del flujo. Asincrónico o no.
- options
-
ReadableOperatorOptions
Devoluciones
un flujo filtrado con el predicado 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>
Parámetros
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Devoluciones
Promise<any>
find<T>((data: any, options?: Abortable) => data, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Este método es similar a Array.prototype.find y llama a fn en cada chunk del flujo para encontrar un chunk con un valor truthy para fn. Una vez que el valor de retorno esperado de una llamada de fn es truthy, el flujo se destruye y la promesa se cumple con un valor por el que fn devolvió un valor truthy.
Si todas las llamadas fn en los chunks devolven un valor falso, la promesa se cumple con undefined.
function find<T>(fn: (data: any, options?: Abortable) => data, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<undefined | T>
Parámetros
- fn
-
(data: any, options?: Abortable) => data
una función para llamar a cada fragmento del flujo. Asincrónico o no.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Devoluciones
Promise<undefined | T>
una promesa que se evalúa al primer fragmento para el que FN evaluó con un valor truthy, o undefined si no se encontró ningún elemento.
flatMap((data: any, options?: Abortable) => any, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Este método devuelve un nuevo flujo aplicando la callback dada a cada fragmento del flujo y luego aplanando el resultado.
Es posible devolver un flujo u otro iterable iterable o asíncrono desde fn y los flujos resultantes se fusionarán (aplanarán) en el flujo devuelto.
function flatMap(fn: (data: any, options?: Abortable) => any, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Readable
Parámetros
- fn
-
(data: any, options?: Abortable) => any
una función para mapear cada fragmento del flujo. Puede que sea asincrónico. Puede ser un arroyo o generador.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Devoluciones
un flujo mapeado plano con la función fn.
forEach((data: any, options?: Abortable) => void | Promise<void>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Este método permite iterar un flujo. Para cada fragmento en el flujo se llamará la función fn .
Si la función fn devuelve una promesa, esa promesa será awaited.
Este método se diferencia de for await...of los bucles en que puede procesar chunks simultáneamente opcionalmente.
Además, una forEach iteración solo puede detenerse si se ha pasado una signal opción y se aborta el AbortController correspondiente, mientras que for await...of puede detenerse con break o return.
En cualquier caso, el arroyo será destruido.
Este método es diferente de escuchar el 'data' evento en que utiliza el readable evento en la maquinaria subyacente y puede limitar el número de llamadas fn concurrentes.
function forEach(fn: (data: any, options?: Abortable) => void | Promise<void>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<void>
Parámetros
- fn
-
(data: any, options?: Abortable) => void | Promise<void>
una función para llamar a cada fragmento del flujo. Asincrónico o no.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Devoluciones
Promise<void>
una promesa para cuando el stream termine.
from(Iterable<any> | AsyncIterable<any>, ReadableOptions<Readable>)
Un método de utilidad para crear flujos legibles a partir de iteradores.
static function from(iterable: Iterable<any> | AsyncIterable<any>, options?: ReadableOptions<Readable>): Readable
Parámetros
- iterable
-
Iterable<any> | AsyncIterable<any>
Objeto que implementa el Symbol.asyncIterator protocolo o Symbol.iterator iterable. Emite un evento de 'error' si se pasa un valor nulo.
- options
-
ReadableOptions<Readable>
Opciones proporcionadas a new stream.Readable([options]). Por defecto, Readable.from() se establecerá options.objectMode en true, a menos que esto se opte explícitamente por no ser asignado options.objectMode a false.
Devoluciones
fromWeb(ReadableStream<any>, Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">)
Un método de utilidad para crear un Readable a partir de una web ReadableStream.
static function fromWeb(readableStream: ReadableStream<any>, options?: Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">): Readable
Parámetros
- readableStream
-
ReadableStream<any>
- options
-
Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">
Devoluciones
isDisturbed(ReadableStream<any> | ReadableStream)
Retorna tanto si la transmisión ha sido leída como cancelada.
static function isDisturbed(stream: ReadableStream<any> | ReadableStream): boolean
Parámetros
- stream
-
ReadableStream<any> | ReadableStream
Devoluciones
boolean
isPaused()
El readable.isPaused() método devuelve el estado operativo actual de la Readable.
Esto se utiliza principalmente por el mecanismo que subyace al readable.pipe() método.
En la mayoría de los casos típicos, no habrá razón para usar este método directamente.
const readable = new stream.Readable();
readable.isPaused(); // === false
readable.pause();
readable.isPaused(); // === true
readable.resume();
readable.isPaused(); // === false
function isPaused(): boolean
Devoluciones
boolean
iterator(ReadableIteratorOptions)
El iterador creado por este método da a los usuarios la opción de cancelar la destrucción del flujo si el for await...of bucle sale por return, break, o throw, o si el iterador debe destruir el flujo si emitió un error durante la iteración.
function iterator(options?: ReadableIteratorOptions): AsyncIterator<any, undefined, any>
Parámetros
- options
-
ReadableIteratorOptions
Devoluciones
AsyncIterator<any, undefined, any>
listenerCount(string | symbol, (args: any[]) => void)
function listenerCount(eventName: string | symbol, listener?: (args: any[]) => void): number
Parámetros
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Devoluciones
number
listenerCount<E>(E, (args: ReadableEventMap[E]) => void)
function listenerCount<E>(eventName: E, listener?: (args: ReadableEventMap[E]) => void): number
Parámetros
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Devoluciones
number
listeners(string | symbol)
function listeners(eventName: string | symbol): (args: any[]) => void[]
Parámetros
- eventName
-
string | symbol
Devoluciones
(args: any[]) => void[]
listeners<E>(E)
function listeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]
Parámetros
- eventName
-
E
Devoluciones
(args: ReadableEventMap[E]) => void[]
map((data: any, options?: Abortable) => any, ReadableOperatorOptions)
Este método permite mapear sobre el arroyo. La función fn se llamará para cada fragmento del flujo.
Si la función fn devuelve una promesa, esa promesa será awaited antes de ser pasada al flujo de resultados.
function map(fn: (data: any, options?: Abortable) => any, options?: ReadableOperatorOptions): Readable
Parámetros
- fn
-
(data: any, options?: Abortable) => any
una función para mapear cada fragmento del flujo. Asincrónico o no.
- options
-
ReadableOperatorOptions
Devoluciones
un flujo mapeado con la función fn.
off(string | symbol, (args: any[]) => void)
function off(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parámetros
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Devoluciones
off<E>(E, (args: ReadableEventMap[E]) => void)
function off<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parámetros
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Devoluciones
on(string | symbol, (args: any[]) => void)
function on(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parámetros
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Devoluciones
on<E>(E, (args: ReadableEventMap[E]) => void)
function on<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parámetros
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Devoluciones
once(string | symbol, (args: any[]) => void)
function once(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parámetros
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Devoluciones
once<E>(E, (args: ReadableEventMap[E]) => void)
function once<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parámetros
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Devoluciones
pause()
El readable.pause() método hará que un flujo en modo flujo deje de emitir 'data' eventos, cambiando de modo flujo. Cualquier dato que esté disponible permanecerá en el 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);
});
El readable.pause() método no tiene efecto si hay un 'readable' oyente de eventos.
function pause(): Readable
Devoluciones
prependListener(string | symbol, (args: any[]) => void)
function prependListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parámetros
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Devoluciones
prependListener<E>(E, (args: ReadableEventMap[E]) => void)
function prependListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parámetros
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Devoluciones
prependOnceListener(string | symbol, (args: any[]) => void)
function prependOnceListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parámetros
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Devoluciones
prependOnceListener<E>(E, (args: ReadableEventMap[E]) => void)
function prependOnceListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parámetros
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Devoluciones
push(any, BufferEncoding)
function push(chunk: any, encoding?: BufferEncoding): boolean
Parámetros
- chunk
-
any
- encoding
-
BufferEncoding
Devoluciones
boolean
rawListeners(string | symbol)
function rawListeners(eventName: string | symbol): (args: any[]) => void[]
Parámetros
- eventName
-
string | symbol
Devoluciones
(args: any[]) => void[]
rawListeners<E>(E)
function rawListeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]
Parámetros
- eventName
-
E
Devoluciones
(args: ReadableEventMap[E]) => void[]
read(number)
El readable.read() método lee los datos del búfer interno y los devuelve. Si no hay datos disponibles para leer, null se devuelve. Por defecto, los datos se devuelven como objeto Buffer a menos que se haya especificado una codificación usando el readable.setEncoding() método o que el flujo esté funcionando en modo objeto.
El argumento opcional size especifica un número específico de bytes a leer. Si size no hay bytes disponibles para ser leídos, null se devolverán a menos que el flujo haya terminado, en cuyo caso se devolverán todos los datos restantes en el búfer interno.
Si el size argumento no se especifica, todos los datos contenidos en el búfer interno serán devueltos.
El size argumento debe ser menor o igual a 1 GiB.
El readable.read() método solo debe llamarse en Readable flujos que operan en modo pausa. En modo fluido, readable.read() se llama automáticamente hasta que el buffer interno se vacía completamente.
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.');
});
Cada llamada a readable.read() devuelve un fragmento de datos, o null. Los chunks no están concatenados. Es necesario un while bucle para consumir todos los datos que actualmente están en el búfer. Al leer un archivo .read() grande puede devolver null, habiendo consumido todo el contenido almacenado en búfer hasta ahora, pero aún queda más datos que aún no están almacenados en búfer. En este caso, se emitirá un nuevo 'readable' evento cuando haya más datos en el búfer. Finalmente, el 'end' evento se emitirá cuando no haya más datos disponibles.
Por lo tanto, para leer todo el contenido de un archivo desde un readable, es necesario recopilar fragmentos a través de múltiples 'readable' eventos:
const chunks = [];
readable.on('readable', () => {
let chunk;
while (null !== (chunk = readable.read())) {
chunks.push(chunk);
}
});
readable.on('end', () => {
const content = chunks.join('');
});
Un Readable flujo en modo objeto siempre devolverá un solo elemento de una llamada a readable.read(size), independientemente del valor del size argumento.
Si el readable.read() método devuelve un fragmento de datos, también se emitirá un 'data' evento.
Llamar leer después de que el 'end' evento haya sido emitido volverá null. No se generará ningún error en tiempo de ejecución.
function read(size?: number): any
Parámetros
- size
-
number
Argumento opcional para especificar cuántos datos leer.
Devoluciones
any
reduce<T>((previous: any, data: any, options?: Abortable) => T)
Este método llama a fn en cada fragmento del flujo en orden, pasándole el resultado del cálculo sobre el elemento anterior. Devuelve una promesa por el valor final de la reducción.
Si no se proporciona un valor inicial , se utiliza el primer fragmento del flujo como valor inicial.
Si el flujo está vacío, la promesa se rechaza con una TypeError con la ERR_INVALID_ARGS propiedad de código.
La función reductora itera el flujo elemento por elemento, lo que significa que no existe un parámetro de concurrencia ni paralelismo. Para realizar una reducción simultáneamente, puedes extraer la función asíncrona al readable.map método.
function reduce<T>(fn: (previous: any, data: any, options?: Abortable) => T): Promise<T>
Parámetros
- fn
-
(previous: any, data: any, options?: Abortable) => T
una función reductora para llamar a cada fragmento del flujo. Asincrónico o no.
Devoluciones
Promise<T>
una promesa del valor final de la reducción.
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>
Parámetros
- fn
-
(previous: T, data: any, options?: Abortable) => T
- initial
-
T
- options
-
Abortable
Devoluciones
Promise<T>
removeAllListeners(string | symbol)
function removeAllListeners(eventName?: string | symbol): Readable
Parámetros
- eventName
-
string | symbol
Devoluciones
removeAllListeners<E>(E)
function removeAllListeners<E>(eventName?: E): Readable
Parámetros
- eventName
-
E
Devoluciones
removeListener(string | symbol, (args: any[]) => void)
function removeListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parámetros
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Devoluciones
removeListener<E>(E, (args: ReadableEventMap[E]) => void)
function removeListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parámetros
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Devoluciones
resume()
El readable.resume() método provoca que una corriente explícitamente Readable pausada reanude la 'data' emisión de eventos, cambiando la corriente a modo de flujo.
El readable.resume() método puede usarse para consumir completamente los datos de un flujo sin procesar realmente ninguno de esos datos:
getReadableStreamSomehow()
.resume()
.on('end', () => {
console.log('Reached the end, but did not read anything.');
});
El readable.resume() método no tiene efecto si hay un 'readable' oyente de eventos.
function resume(): Readable
Devoluciones
setEncoding(BufferEncoding)
El readable.setEncoding() método establece la codificación de caracteres para los datos leídos del Readable flujo.
Por defecto, no se asigna codificación y los datos del flujo se devolverán como Buffer objetos. Establecer una codificación hace que los datos del flujo se devuelvan como cadenas de la codificación especificada en lugar de como Buffer objetos. Por ejemplo, al llamar readable.setEncoding('utf8') , los datos de salida se interpretan como datos UTF-8 y se pasan como cadenas. Llamar readable.setEncoding('hex') hará que los datos se codifiquen en formato de cadena hexadecimal.
El Readable flujo gestionará correctamente los caracteres de varios bytes entregados a través del flujo que de otro modo se decodificarían incorrectamente si simplemente se extraen del flujo como Buffer objetos.
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
Parámetros
- encoding
-
BufferEncoding
Codificación que se va a usar.
Devoluciones
some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Este método es similar a Array.prototype.some y llama a fn en cada fragmento del flujo hasta que el valor de retorno esperado es true (o cualquier valor truthy). Una vez que una llamada fn sobre un valor de retorno de chunk awaited es veracífica, el flujo se destruye y la promesa se cumple con true.
Si ninguna de las llamadas de fn en los chunks devuelve un valor truthy, la promesa se cumple con false.
function some(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<boolean>
Parámetros
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
una función para llamar a cada fragmento del flujo. Asincrónico o no.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Devoluciones
Promise<boolean>
Una promesa que evalúa si trueFN devolvió un valor de Truthy para al menos uno de los chunks.
take(number, Abortable)
Este método devuelve un nuevo flujo con los primeros bloques límite .
function take(limit: number, options?: Abortable): Readable
Parámetros
- limit
-
number
el número de fragmentos que hay que extraer del legible.
- options
-
Abortable
Devoluciones
Un stream con bloques límite tomados.
toArray(Abortable)
Este método permite obtener fácilmente el contenido de un stream.
Como este método lee todo el flujo en la memoria, anula los beneficios de los flujos. Está pensado para la interoperabilidad y la comodidad, no como la forma principal de consumir streams.
function toArray(options?: Abortable): Promise<any[]>
Parámetros
- options
-
Abortable
Devoluciones
Promise<any[]>
una promesa que contiene un arreglo con el contenido de la transmisión.
toWeb(ReadableStream, ReadableToWebOptions)
Un método de utilidad para crear una web ReadableStream a partir de un Readablearchivo .
static function toWeb(streamReadable: ReadableStream, options?: ReadableToWebOptions): ReadableStream<any>
Parámetros
- streamReadable
-
ReadableStream
- options
-
ReadableToWebOptions
Devoluciones
ReadableStream<any>
unpipe(WritableStream)
El readable.unpipe() método desprende un Writable arroyo previamente conectado usando el método de la tubería .
Si no se especifica el destination , entonces todas las tuberías se desacoplan.
Si se especifica destination pero no hay tubería configurada para ello, entonces el método no hace nada.
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
Parámetros
- destination
-
WritableStream
Flujo específico opcional para desconectar
Devoluciones
unshift(any, BufferEncoding)
Pasar chunk como null señala el final del flujo (EOF) y se comporta igual que readable.push(null), tras lo cual no se pueden escribir más datos. La señal EOF se coloca al final del búfer y cualquier dato almacenado en búfer se eliminará.
El readable.unshift() método envía un fragmento de datos de vuelta al búfer interno. Esto es útil en ciertas situaciones en las que un flujo está siendo consumido por código que necesita "desconsumir" cierta cantidad de datos que ha extraído optimistamente de la fuente, para que los datos puedan ser transmitidos a otra parte.
El stream.unshift(chunk) método no puede llamarse después de que el 'end' evento haya sido emitido o se generará un error en tiempo de ejecución.
Los desarrolladores que usen stream.unshift() a menudo deberían considerar cambiar a un Transform stream en su lugar. Consulta la API for stream implementers sección para más información.
// 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 diferencia del push, stream.unshift(chunk) no termina el proceso de lectura reiniciando el estado interno de lectura del flujo.
Esto puede causar resultados inesperados si readable.unshift() se llama durante una lectura (es decir, desde dentro de una implementación _read en un flujo personalizado). Seguir la llamada con readable.unshift() un empuje inmediato reiniciará el estado de lectura adecuadamente, sin embargo, es mejor evitar llamar readable.unshift() mientras realizas una lectura.
function unshift(chunk: any, encoding?: BufferEncoding)
Parámetros
- chunk
-
any
Un fragmento de datos para desmover a la cola de lectura. Para flujos que no operan en modo objeto, chunk debe ser una {cadena}, {Buffer}, {TypedArray}, {DataView} o null. Para flujos en modo objeto, chunk puede ser cualquier valor JavaScript.
- encoding
-
BufferEncoding
Codificación de fragmentos de cadena. Debe ser una codificación válida Buffer , como 'utf8' o 'ascii'.
wrap(ReadableStream)
Antes de Node.js 0.10, los flujos no implementaban la API completa node:stream del módulo tal como está definida actualmente. (Véase Compatibility para más información.)
Cuando se utiliza una biblioteca de Node.js antigua que emite 'data' eventos y tiene un método de pausa que es solo asesor, el readable.wrap() método puede usarse para crear un Readable flujo que utilice el flujo antiguo como fuente de datos.
Rara vez será necesario usarlo readable.wrap() , pero el método se ha proporcionado como una comodidad para interactuar con aplicaciones y bibliotecas Node.js antiguas.
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
Parámetros
- stream
-
ReadableStream
Un flujo legible "estilo antiguo"
Devoluciones
[asyncIterator]()
function [asyncIterator](): AsyncIterator<any, undefined, any>
Devoluciones
AsyncIterator<any, undefined, any>
AsyncIterator para consumir completamente el arroyo.
Detalles de los métodos heredados
eventNames()
Devuelve una matriz que enumera los eventos para los que el emisor ha registrado agentes de escucha.
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)[]
Devoluciones
(string | symbol)[]
Heredado de Stream.eventNames
getMaxListeners()
Devuelve el valor máximo actual del agente de escucha para el EventEmitter que se establece mediante emitter.setMaxListeners(n) o los valores predeterminados en events.defaultMaxListeners.
function getMaxListeners(): number
Devoluciones
number
Heredado de Stream.getMaxListeners
pipe<T>(T, PipeOptions)
function pipe<T>(destination: T, options?: PipeOptions): T
Parámetros
- destination
-
T
- options
-
PipeOptions
Devoluciones
T
Heredado de Stream.pipe
setMaxListeners(number)
De forma predeterminada, EventEmitters imprimirán una advertencia si se agregan más de 10 agentes de escucha para un evento determinado. Este es un valor predeterminado útil que ayuda a encontrar fugas de memoria. El método emitter.setMaxListeners() permite modificar el límite para esta instancia de EventEmitter específica. El valor se puede establecer en Infinity (o 0) para indicar un número ilimitado de agentes de escucha.
Devuelve una referencia al EventEmitter, para que las llamadas se puedan encadenar.
function setMaxListeners(n: number): Readable
Parámetros
- n
-
number
Devoluciones
Heredado de Stream.setMaxOyentes
[captureRejectionSymbol](Error, string | symbol, any[])
El Symbol.for('nodejs.rejection') método se llama en caso de que ocurra un rechazo de promesa al emitir un evento y captureRejections está habilitado en el emisor.
Es posible usarlo events.captureRejectionSymbol en lugar de 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[])
Parámetros
- error
-
Error
- event
-
string | symbol
- args
-
any[]
Heredado de Stream.__@captureRejectionSymbol@175