Readable class
- Extends
-
Stream
Konstruktorer
| Readable(Readable |
Egenskaper
| closed | Är |
| destroyed | Är |
| errored | Returnerar fel om strömmen har förstörts med ett fel. |
| readable | Är |
| readable |
Returnerar om strömmen förstördes eller felade innan den sändes |
| readable |
Returnerar om det |
| readable |
Getter för egenskapen |
| readable |
Blir när |
| readable |
Denna egenskap speglar det aktuella tillståndet för en |
| readable |
Returnerar värdet av |
| readable |
Denna egenskap innehåller antalet bytes (eller objekt) i kön som är redo att läsas. Värdet ger introspektionsdata angående statusen för . |
| readable |
Getter för egenskapen |
Metoder
| add |
|
| add |
|
| compose(Writable |
Denna metod tillåter också att en Mer information finns i |
| destroy(Error) | Förstör strömmen. Eventuellt generera en När Implementörer bör inte åsidosätta denna metod, utan istället implementera |
| drop(number, Abortable) | Denna metod returnerar en ny ström med de första limit-chunks borttagna från början. |
| emit(string | symbol, any[]) | |
| emit<E>(E, Readable |
|
| every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
Denna metod liknar |
| filter((data: any, options?: Abortable) => boolean | Promise<boolean>, Readable |
Denna metod möjliggör filtrering av strömmen. För varje chunk i strömmen anropas fn-funktionen och om den returnerar ett truthy-värde kommer chunken att skickas till resultatströmmen.
Om fn-funktionen returnerar ett löfte – kommer det löftet att vara |
| find((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
|
| find<T>((data: any, options?: Abortable) => data, Pick<Readable |
Denna metod liknar |
| flat |
Denna metod returnerar en ny ström genom att applicera den givna callbacken på varje bit av strömmen och sedan platta ut resultatet. Det är möjligt att returnera en ström eller en annan iterabel eller asynkron iterabel från fn och resultatströmmarna slås ihop (plattas ut) i den returnerade strömmen. |
| for |
Denna metod möjliggör iteration av en ström. För varje chunk i strömmen kommer fn-funktionen att anropas.
Om fn-funktionen returnerar ett löfte – kommer det löftet att vara Denna metod skiljer sig från Denna metod skiljer sig från att lyssna på händelsen |
| from(Iterable<any> | Async |
En verktygsmetod för att skapa läsbara strömmar av iteratorer. |
| from |
En verktygsmetod för att skapa en |
| is |
Returnerar oavsett om strömmen har lästs från eller avbrutits. |
| is |
Metoden
|
| iterator(Readable |
Iteratorn som skapas med denna metod ger användare möjlighet att avbryta förstörelsen av strömmen om |
| listener |
|
| listener |
|
| listeners(string | symbol) | |
| listeners<E>(E) | |
| map((data: any, options?: Abortable) => any, Readable |
Denna metod möjliggör kartläggning över strömmen.
Fn-funktionen anropas för varje chunk i strömmen.
Om fn-funktionen returnerar ett löfte – kommer det löftet att vara |
| 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() | Metoden
Metoden |
| prepend |
|
| prepend |
|
| prepend |
|
| prepend |
|
| push(any, Buffer |
|
| raw |
|
| raw |
|
| read(number) | Metoden Det valfria Om argumentet Argumentet Metoden
Varje anrop till returnerar Därför är det nödvändigt att samla in bitar över flera
En Om Anrop läs efter att händelsen |
| reduce<T>((previous: any, data: any, options?: Abortable) => T) | Denna metod anropar fn på varje bit av strömmen i ordning och ger den resultatet från beräkningen på föregående element. Den ger ett löfte om det slutliga värdet av reduktionen. Om inget initialt värde tillhandahålls används den första delen av strömmen som startvärde.
Om strömmen är tom avvisas löftet med en Reducerfunktionen itererar strömmen element för element, vilket innebär att det inte finns någon samtidighetsparameter eller parallellism. För att utföra en reduce samtidigt kan du extrahera metoden med asynkron funktion till |
| reduce<T>((previous: T, data: any, options?: Abortable) => T, T, Abortable) | |
| remove |
|
| remove |
|
| remove |
|
| remove |
|
| resume() | Metoden Metoden
Metoden |
| set |
Metoden Som standard tilldelas ingen kodning och strömdata returneras som Strömmen
|
| some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
Denna metod liknar |
| take(number, Abortable) | Denna metod returnerar en ny ström med de första gränschunkarna. |
| to |
Denna metod gör det enkelt att få tag på innehållet i en ström. Eftersom denna metod läser in hela strömmen i minnet upphäver den fördelarna med strömmar. Det är avsett för interoperabilitet och bekvämlighet, inte som det primära sättet att konsumera strömmar. |
| to |
En nyttometod för att skapa ett webbnät |
| unpipe(Writable |
Metoden Om inte specificeras Om metoden
|
| unshift(any, Buffer |
Att passera Metoden Metoden Utvecklare som ofta använder
Till skillnad från push kommer inte |
| wrap(Readable |
Före Node.js 0.10 implementerade inte streams hela När man använder ett äldre Node.js bibliotek som sänder händelser Den kommer sällan att vara nödvändig att använda
|
| [async |
|
| [to |
När flaggan Detta ger en batchad asynkron iterator som tömmer strömmens interna buffert i Den returnerade iteratorn märks som en validerad källa, så
Utan flaggan |
Ärvda metoder
| event |
Returnerar en matris som visar de händelser som sändaren har registrerade lyssnare för.
|
| get |
Returnerar det aktuella maximala lyssnarvärdet för |
| pipe<T>(T, Pipe |
|
| set |
Som standard skriver Returnerar en referens till |
| [capture |
Metoden
|
Konstruktorinformation
Readable(ReadableOptions<Readable>)
Egenskapsinformation
closed
Är true efter 'close' har sänds ut.
closed: boolean
Egenskapsvärde
boolean
destroyed
Är true efter readable.destroy() att ha kallats upp.
destroyed: boolean
Egenskapsvärde
boolean
errored
Returnerar fel om strömmen har förstörts med ett fel.
errored: null | Error
Egenskapsvärde
null | Error
readable
Är true om det är säkert att anropa läs, vilket betyder att strömmen inte har förstörts eller sänts 'error' ut eller 'end'.
readable: boolean
Egenskapsvärde
boolean
readableAborted
Returnerar om strömmen förstördes eller felade innan den sändes 'end'ut .
readableAborted: boolean
Egenskapsvärde
boolean
readableDidRead
Returnerar om det 'data' har emitterats.
readableDidRead: boolean
Egenskapsvärde
boolean
readableEncoding
Getter för egenskapen encoding hos en given Readable ström. Egenskapen encoding kan sättas med hjälp av setEncoding-metoden .
readableEncoding: null | BufferEncoding
Egenskapsvärde
null | BufferEncoding
readableEnded
readableFlowing
Denna egenskap speglar det aktuella tillståndet för en Readable bäck som beskrivs i avsnittet om tre tillstånd .
readableFlowing: null | boolean
Egenskapsvärde
null | boolean
readableHighWaterMark
Returnerar värdet av highWaterMark passed när detta Readableskapas .
readableHighWaterMark: number
Egenskapsvärde
number
readableLength
Denna egenskap innehåller antalet bytes (eller objekt) i kön som är redo att läsas. Värdet ger introspektionsdata angående statusen för .highWaterMark
readableLength: number
Egenskapsvärde
number
readableObjectMode
Getter för egenskapen objectMode hos en given Readable ström.
readableObjectMode: boolean
Egenskapsvärde
boolean
Metodinformation
addListener(string | symbol, (args: any[]) => void)
function addListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametrar
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Returer
addListener<E>(E, (args: ReadableEventMap[E]) => void)
function addListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametrar
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Returer
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) motsvarar stream.compose(readable, s).
Denna metod tillåter också att en AbortSignal tillhandahålls, vilket förstör den sammansatta strömmen när den avbryts.
Mer information finns i stream.compose(...streams).
function compose(stream: WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void, options?: Abortable): Duplex
Parametrar
- stream
-
WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void
- options
-
Abortable
Returer
Duplex
en ström som består av strömmen stream.
destroy(Error)
Förstör strömmen. Eventuellt generera en 'error' händelse, och skicka ut en 'close' händelse (om inte emitClose är satt till false). Efter detta anrop släpper den läsbara strömmen alla interna resurser och efterföljande anrop push() ignoreras.
När destroy() alla ytterligare anrop har anropats blir no-op och inga fler fel förutom från _destroy() kan sändas som 'error'.
Implementörer bör inte åsidosätta denna metod, utan istället implementera readable._destroy().
function destroy(error?: Error): Readable
Parametrar
- error
-
Error
Fel som kommer att skickas som nyttolast vid 'error' event.
Returer
drop(number, Abortable)
Denna metod returnerar en ny ström med de första limit-chunks borttagna från början.
function drop(limit: number, options?: Abortable): Readable
Parametrar
- limit
-
number
Antalet delar som ska tas bort från läsbarheten.
- options
-
Abortable
Returer
En stream med limit chunks som släpptes från början.
emit(string | symbol, any[])
function emit(eventName: string | symbol, args: any[]): boolean
Parametrar
- eventName
-
string | symbol
- args
-
any[]
Returer
boolean
emit<E>(E, ReadableEventMap[E])
function emit<E>(eventName: E, args: ReadableEventMap[E]): boolean
Parametrar
- eventName
-
E
- args
-
ReadableEventMap[E]
Returer
boolean
every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Denna metod liknar Array.prototype.every och anropar fn på varje chunk i strömmen för att kontrollera om alla väntade returvärden är sanningsvärden för fn. När ett fn-anrop på ett chunk awaited-returvärde är falskt, förstörs strömmen och löftet uppfylls med false.
Om alla fn-anrop på chunks returnerar ett truthy-värde, uppfylls löftet med true.
function every(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<boolean>
Parametrar
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
en funktion för att anropa varje del av strömmen. Asynkron eller inte.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Returer
Promise<boolean>
Ett löfte som utvärderar om trueFN returnerade ett sanningsenligt värde för varje bit.
filter((data: any, options?: Abortable) => boolean | Promise<boolean>, ReadableOperatorOptions)
Denna metod möjliggör filtrering av strömmen. För varje chunk i strömmen anropas fn-funktionen och om den returnerar ett truthy-värde kommer chunken att skickas till resultatströmmen.
Om fn-funktionen returnerar ett löfte – kommer det löftet att vara awaited.
function filter(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: ReadableOperatorOptions): Readable
Parametrar
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
en funktion för att filtrera delar från strömmen. Asynkron eller inte.
- options
-
ReadableOperatorOptions
Returer
en ström filtrerad med predikatet 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>
Parametrar
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Returer
Promise<any>
find<T>((data: any, options?: Abortable) => data, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Denna metod liknar Array.prototype.find och anropar fn på varje chunk i strömmen för att hitta en chunk med ett truthy-värde för fn. När ett fn-samtals förväntade returvärde är truthy, förstörs strömmen och löftet uppfylls med ett värde för vilket fn returnerade ett truthy-värde.
Om alla fn-anrop på chunkarna returnerar ett falskt värde, uppfylls löftet med undefined.
function find<T>(fn: (data: any, options?: Abortable) => data, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<undefined | T>
Parametrar
- fn
-
(data: any, options?: Abortable) => data
en funktion för att anropa varje del av strömmen. Asynkron eller inte.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Returer
Promise<undefined | T>
ett löfte som utvärderar till den första chunken för vilken FN utvärderade med ett truthy-värde, eller undefined om inget element hittades.
flatMap((data: any, options?: Abortable) => any, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Denna metod returnerar en ny ström genom att applicera den givna callbacken på varje bit av strömmen och sedan platta ut resultatet.
Det är möjligt att returnera en ström eller en annan iterabel eller asynkron iterabel från fn och resultatströmmarna slås ihop (plattas ut) i den returnerade strömmen.
function flatMap(fn: (data: any, options?: Abortable) => any, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Readable
Parametrar
- fn
-
(data: any, options?: Abortable) => any
en funktion för att kartlägga varje chunk i strömmen. Kan vara asynk. Det kan vara en bäck eller generator.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Returer
en ström plattmappad med funktionen fn.
forEach((data: any, options?: Abortable) => void | Promise<void>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Denna metod möjliggör iteration av en ström. För varje chunk i strömmen kommer fn-funktionen att anropas.
Om fn-funktionen returnerar ett löfte – kommer det löftet att vara awaited.
Denna metod skiljer sig från for await...of loopar genom att den valfritt kan bearbeta chunkar samtidigt.
Dessutom kan en forEach iteration endast stoppas genom att ha passerat ett signal alternativ och avbryta den relaterade AbortControllern medan for await...of kan stoppas med break eller return.
I båda fallen kommer strömmen att förstöras.
Denna metod skiljer sig från att lyssna på händelsen 'data' genom att den använder händelsen readable i den underliggande maskinen och kan begränsa antalet samtidiga FN-anrop .
function forEach(fn: (data: any, options?: Abortable) => void | Promise<void>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<void>
Parametrar
- fn
-
(data: any, options?: Abortable) => void | Promise<void>
en funktion för att anropa varje del av strömmen. Asynkron eller inte.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Returer
Promise<void>
ett löfte när streamen är slut.
from(Iterable<any> | AsyncIterable<any>, ReadableOptions<Readable>)
En verktygsmetod för att skapa läsbara strömmar av iteratorer.
static function from(iterable: Iterable<any> | AsyncIterable<any>, options?: ReadableOptions<Readable>): Readable
Parametrar
- iterable
-
Iterable<any> | AsyncIterable<any>
Objekt som implementerar det Symbol.asyncIterator eller Symbol.iterator iterabla protokollet. Utsänder en 'fel'-händelse om ett nollvärde passeras.
- options
-
ReadableOptions<Readable>
Alternativ som erbjuds till new stream.Readable([options]). Som standard kommer att Readable.from() sätta options.objectMode till true, om inte detta uttryckligen är valt bort genom att sätta options.objectMode till false.
Returer
fromWeb(ReadableStream<any>, Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">)
En verktygsmetod för att skapa en Readable från ett webb.ReadableStream
static function fromWeb(readableStream: ReadableStream<any>, options?: Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">): Readable
Parametrar
- readableStream
-
ReadableStream<any>
- options
-
Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">
Returer
isDisturbed(ReadableStream<any> | ReadableStream)
Returnerar oavsett om strömmen har lästs från eller avbrutits.
static function isDisturbed(stream: ReadableStream<any> | ReadableStream): boolean
Parametrar
- stream
-
ReadableStream<any> | ReadableStream
Returer
boolean
isPaused()
Metoden readable.isPaused() returnerar det aktuella drifttillståndet för .Readable
Detta används främst av mekanismen som ligger till grund för readable.pipe() metoden.
I de flesta vanliga fall finns det ingen anledning att använda denna metod direkt.
const readable = new stream.Readable();
readable.isPaused(); // === false
readable.pause();
readable.isPaused(); // === true
readable.resume();
readable.isPaused(); // === false
function isPaused(): boolean
Returer
boolean
iterator(ReadableIteratorOptions)
Iteratorn som skapas med denna metod ger användare möjlighet att avbryta förstörelsen av strömmen om for await...of loopen avslutas med return, break, eller throw, eller om iteratorn ska förstöra strömmen om strömmen ger ett fel under iterationen.
function iterator(options?: ReadableIteratorOptions): AsyncIterator<any, undefined, any>
Parametrar
- options
-
ReadableIteratorOptions
Returer
AsyncIterator<any, undefined, any>
listenerCount(string | symbol, (args: any[]) => void)
function listenerCount(eventName: string | symbol, listener?: (args: any[]) => void): number
Parametrar
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Returer
number
listenerCount<E>(E, (args: ReadableEventMap[E]) => void)
function listenerCount<E>(eventName: E, listener?: (args: ReadableEventMap[E]) => void): number
Parametrar
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Returer
number
listeners(string | symbol)
function listeners(eventName: string | symbol): (args: any[]) => void[]
Parametrar
- eventName
-
string | symbol
Returer
(args: any[]) => void[]
listeners<E>(E)
function listeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]
Parametrar
- eventName
-
E
Returer
(args: ReadableEventMap[E]) => void[]
map((data: any, options?: Abortable) => any, ReadableOperatorOptions)
Denna metod möjliggör kartläggning över strömmen.
Fn-funktionen anropas för varje chunk i strömmen.
Om fn-funktionen returnerar ett löfte – kommer det löftet att vara awaited innan det skickas till resultatströmmen.
function map(fn: (data: any, options?: Abortable) => any, options?: ReadableOperatorOptions): Readable
Parametrar
- fn
-
(data: any, options?: Abortable) => any
en funktion för att kartlägga varje chunk i strömmen. Asynkron eller inte.
- options
-
ReadableOperatorOptions
Returer
en ström mappad med funktionen fn.
off(string | symbol, (args: any[]) => void)
function off(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametrar
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Returer
off<E>(E, (args: ReadableEventMap[E]) => void)
function off<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametrar
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Returer
on(string | symbol, (args: any[]) => void)
function on(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametrar
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Returer
on<E>(E, (args: ReadableEventMap[E]) => void)
function on<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametrar
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Returer
once(string | symbol, (args: any[]) => void)
function once(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametrar
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Returer
once<E>(E, (args: ReadableEventMap[E]) => void)
function once<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametrar
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Returer
pause()
Metoden readable.pause() får en ström i flödesläge att sluta sända 'data' ut händelser och byter ut från flödesläge. All data som blir tillgänglig kommer att stanna kvar i den interna bufferten.
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);
});
Metoden readable.pause() har ingen effekt om det finns en 'readable' händelselyssnare.
function pause(): Readable
Returer
prependListener(string | symbol, (args: any[]) => void)
function prependListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametrar
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Returer
prependListener<E>(E, (args: ReadableEventMap[E]) => void)
function prependListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametrar
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Returer
prependOnceListener(string | symbol, (args: any[]) => void)
function prependOnceListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametrar
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Returer
prependOnceListener<E>(E, (args: ReadableEventMap[E]) => void)
function prependOnceListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametrar
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Returer
push(any, BufferEncoding)
function push(chunk: any, encoding?: BufferEncoding): boolean
Parametrar
- chunk
-
any
- encoding
-
BufferEncoding
Returer
boolean
rawListeners(string | symbol)
function rawListeners(eventName: string | symbol): (args: any[]) => void[]
Parametrar
- eventName
-
string | symbol
Returer
(args: any[]) => void[]
rawListeners<E>(E)
function rawListeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]
Parametrar
- eventName
-
E
Returer
(args: ReadableEventMap[E]) => void[]
read(number)
Metoden readable.read() läser ut data från den interna bufferten och returnerar den. Om ingen data finns tillgänglig att läsa, null returneras. Som standard returneras data som ett Buffer objekt, om inte en kodning har specificerats med metoden readable.setEncoding() eller om strömmen inte arbetar i objektläge.
Det valfria size argumentet specificerar ett specifikt antal bytes att läsa. Om size bytes inte finns tillgängliga för läsning null kommer de att returneras om inte strömmen har avslutats, i vilket fall all data som finns kvar i den interna bufferten kommer att returneras.
Om argumentet size inte specificeras kommer all data som finns i den interna bufferten att returneras.
Argumentet size måste vara mindre än eller lika med 1 GiB.
Metoden readable.read() ska endast anropas på Readable strömmar som arbetar i pausläge. I flödesläge readable.read() anropas automatiskt tills den interna bufferten är helt tömd.
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.');
});
Varje anrop till returnerar readable.read() en databit, eller null. Bitarna är inte sammanfogade. En while loop är nödvändig för att konsumera all data som för närvarande finns i bufferten. När man läser en stor fil .read() kan det återkomma null, efter att ha konsumerat allt buffrat innehåll hittills, men det finns fortfarande mer data kvar som ännu inte är buffrad. I detta fall kommer en ny 'readable' händelse att sändas ut när det finns mer data i bufferten. Slutligen kommer händelsen 'end' att sändas ut när det inte finns mer data att komma.
Därför är det nödvändigt att samla in bitar över flera readable händelser för att läsa hela innehållet i 'readable'en fil:
const chunks = [];
readable.on('readable', () => {
let chunk;
while (null !== (chunk = readable.read())) {
chunks.push(chunk);
}
});
readable.on('end', () => {
const content = chunks.join('');
});
En Readable ström i objektläge kommer alltid att returnera ett enda objekt från ett anrop till readable.read(size), oavsett argumentets size värde.
Om readable.read() metoden returnerar en databit kommer även en 'data' händelse att sändas.
Anrop läs efter att händelsen 'end' har sänts kommer att återkomma null. Inget körtidsfel kommer att uppstå.
function read(size?: number): any
Parametrar
- size
-
number
Valfritt argument för att specificera hur mycket data som ska läsas.
Returer
any
reduce<T>((previous: any, data: any, options?: Abortable) => T)
Denna metod anropar fn på varje bit av strömmen i ordning och ger den resultatet från beräkningen på föregående element. Den ger ett löfte om det slutliga värdet av reduktionen.
Om inget initialt värde tillhandahålls används den första delen av strömmen som startvärde.
Om strömmen är tom avvisas löftet med en TypeError med ERR_INVALID_ARGS kodegenskapen.
Reducerfunktionen itererar strömmen element för element, vilket innebär att det inte finns någon samtidighetsparameter eller parallellism. För att utföra en reduce samtidigt kan du extrahera metoden med asynkron funktion till readable.map .
function reduce<T>(fn: (previous: any, data: any, options?: Abortable) => T): Promise<T>
Parametrar
- fn
-
(previous: any, data: any, options?: Abortable) => T
en reducerande funktion för att kalla över varje chunk i strömmen. Asynkron eller inte.
Returer
Promise<T>
ett löfte om det slutliga värdet av reduktionen.
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>
Parametrar
- fn
-
(previous: T, data: any, options?: Abortable) => T
- initial
-
T
- options
-
Abortable
Returer
Promise<T>
removeAllListeners(string | symbol)
function removeAllListeners(eventName?: string | symbol): Readable
Parametrar
- eventName
-
string | symbol
Returer
removeAllListeners<E>(E)
removeListener(string | symbol, (args: any[]) => void)
function removeListener(eventName: string | symbol, listener: (args: any[]) => void): Readable
Parametrar
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Returer
removeListener<E>(E, (args: ReadableEventMap[E]) => void)
function removeListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable
Parametrar
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Returer
resume()
Metoden readable.resume() orsakar att en explicit pausad Readable ström återupptar sändande händelser 'data' , vilket växlar strömmen till flödesläge.
Metoden readable.resume() kan användas för att helt konsumera data från en ström utan att faktiskt bearbeta någon av dessa data:
getReadableStreamSomehow()
.resume()
.on('end', () => {
console.log('Reached the end, but did not read anything.');
});
Metoden readable.resume() har ingen effekt om det finns en 'readable' händelselyssnare.
function resume(): Readable
Returer
setEncoding(BufferEncoding)
Metoden readable.setEncoding() sätter teckenkodningen för data som läses från strömmen Readable .
Som standard tilldelas ingen kodning och strömdata returneras som Buffer objekt. Att sätta en kodning gör att strömdata returneras som strängar av den angivna kodningen istället för som Buffer objekt. Till exempel kommer anrop readable.setEncoding('utf8') att göra att utdatan tolkas som UTF-8-data och skickas som strängar. Anrop readable.setEncoding('hex') kommer att göra att datan kodas i hexadecimalt strängformat.
Strömmen Readable hanterar korrekt flerbyteskaraktärer som levereras genom strömmen och som annars skulle bli felaktigt avkodade om de bara togs från strömmen som Buffer objekt.
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
Parametrar
- encoding
-
BufferEncoding
Kodningen som ska användas.
Returer
some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
Denna metod liknar Array.prototype.some och anropar fn på varje chunk i strömmen tills det väntade returvärdet är true (eller något truthy-värde). När ett fn-anrop på ett chunk awaited-returvärde är sanningsenligt förstörs strömmen och löftet uppfylls med true.
Om ingen av fn-anropen på chunks ger ett truthy-värde, uppfylls löftet med false.
function some(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<boolean>
Parametrar
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
en funktion för att anropa varje del av strömmen. Asynkron eller inte.
- options
-
Pick<ReadableOperatorOptions, "signal" | "concurrency">
Returer
Promise<boolean>
Ett löfte som utvärderar om trueFN returnerade ett sanningsenligt värde för åtminstone en av chunks.
take(number, Abortable)
Denna metod returnerar en ny ström med de första gränschunkarna.
function take(limit: number, options?: Abortable): Readable
Parametrar
- limit
-
number
Antalet delar som ska tas från det läsbara.
- options
-
Abortable
Returer
En stream med begränsade bitar tagna.
toArray(Abortable)
Denna metod gör det enkelt att få tag på innehållet i en ström.
Eftersom denna metod läser in hela strömmen i minnet upphäver den fördelarna med strömmar. Det är avsett för interoperabilitet och bekvämlighet, inte som det primära sättet att konsumera strömmar.
function toArray(options?: Abortable): Promise<any[]>
Parametrar
- options
-
Abortable
Returer
Promise<any[]>
ett löfte som innehåller en array med innehållet i strömmen.
toWeb(ReadableStream, ReadableToWebOptions)
En nyttometod för att skapa ett webbnät ReadableStream från en Readable.
static function toWeb(streamReadable: ReadableStream, options?: ReadableToWebOptions): ReadableStream<any>
Parametrar
- streamReadable
-
ReadableStream
- options
-
ReadableToWebOptions
Returer
ReadableStream<any>
unpipe(WritableStream)
Metoden readable.unpipe() lossar en Writable tidigare ansluten ström med rörmetoden .
Om inte specificeras destination är alla rör lossna.
Om metoden destination är specificerad men inget rör är uppsatt för den, så gör metoden ingenting.
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
Parametrar
- destination
-
WritableStream
Valfri specifik ström att avpipa
Returer
unshift(any, BufferEncoding)
Att passera chunk som null signaler slutet av strömmen (EOF) och beter sig likadant som readable.push(null), varefter ingen mer data kan skrivas. EOF-signalen placeras i slutet av bufferten och all buffrad data kommer fortfarande att rensas.
Metoden readable.unshift() skickar tillbaka en databit i den interna bufferten. Detta är användbart i vissa situationer där en ström konsumeras av kod som behöver "av-konsumera" en viss mängd data som den optimistiskt har hämtat från källan, så att datan kan skickas vidare till någon annan part.
Metoden stream.unshift(chunk) kan inte anropas efter att händelsen 'end' har skickats ut, annars kommer ett runtime-fel att kastas.
Utvecklare som ofta använder stream.unshift() bör överväga att byta till att använda en Transform stream istället. Se API for stream implementers avsnittet för mer information.
// 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;
}
}
}
Till skillnad från push kommer inte stream.unshift(chunk) att avsluta läsprocessen genom att återställa strömmens interna lässtatus.
Detta kan orsaka oväntade resultat om readable.unshift() anropas under en läsning (dvs. från en _read implementation på en anpassad ström). Att följa anropet till readable.unshift() med en omedelbar push återställer läsläget korrekt, men det är bäst att helt enkelt undvika att anropa readable.unshift() medan man utför en läsning.
function unshift(chunk: any, encoding?: BufferEncoding)
Parametrar
- chunk
-
any
En databit som ska återställas till läskön. För strömmar som inte arbetar i objektläge chunk måste det vara en {sträng}, {Buffer}, {TypedArray}, {DataView} eller null. För objektlägesströmmar chunk kan vara valfritt JavaScript-värde.
- encoding
-
BufferEncoding
Kodning av strängbitar. Måste vara en giltig Buffer kodning, såsom 'utf8' eller 'ascii'.
wrap(ReadableStream)
Före Node.js 0.10 implementerade inte streams hela node:stream modul-API:et som det är definierat idag. (Se Compatibility för mer information.)
När man använder ett äldre Node.js bibliotek som sänder händelser 'data' och har en pausmetod som endast är rådgivande, kan metoden readable.wrap() användas för att skapa en Readable ström som använder den gamla strömmen som datakälla.
Den kommer sällan att vara nödvändig att använda readable.wrap() , men metoden har tillhandahållits som en bekvämlighet för interaktion med äldre Node.js applikationer och bibliotek.
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
Parametrar
- stream
-
ReadableStream
En "gammaldags" läsbar ström
Returer
[asyncIterator]()
function [asyncIterator](): AsyncIterator<any, undefined, any>
Returer
AsyncIterator<any, undefined, any>
AsyncIterator för att helt konsumera strömmen.
[toAsyncStreamable]()
När flaggan --experimental-stream-iter är aktiverad Readable implementerar strömmar protokollet Stream.toAsyncStreamable , vilket möjliggör effektiv konsumtion av API:et stream/iter .
Detta ger en batchad asynkron iterator som tömmer strömmens interna buffert i Uint8Array[] batcher, och amortiserar den per-chunk Promise-överhead som standardvägen Symbol.asyncIterator har. För byte-modeströmmar ges chunks direkt som Buffer instanser (vilka är Uint8Array subklasser).
För objektläges- eller kodade strömmar normaliseras varje chunk till Uint8Array innan batching.
Den returnerade iteratorn märks som en validerad källa, så from() den passerar igenom utan ytterligare normalisering.
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'
Utan flaggan --experimental-stream-iter kastar anrop av denna metod .ERR_STREAM_ITER_MISSING_FLAG
function [toAsyncStreamable](): ByteReadableStream
Returer
ByteReadableStream
Ärvd metodinformation
eventNames()
Returnerar en matris som visar de händelser som sändaren har registrerade lyssnare för.
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)[]
Returer
(string | symbol)[]
Ärvt från Stream.eventNames
getMaxListeners()
Returnerar det aktuella maximala lyssnarvärdet för EventEmitter som antingen anges av emitter.setMaxListeners(n) eller som standard till events.defaultMaxListeners.
function getMaxListeners(): number
Returer
number
Ärvt från Stream.getMaxListeners
pipe<T>(T, PipeOptions)
function pipe<T>(destination: T, options?: PipeOptions): T
Parametrar
- destination
-
T
- options
-
PipeOptions
Returer
T
Ärvt från Stream.pipe
setMaxListeners(number)
Som standard skriver EventEmitterut en varning om fler än 10 lyssnare läggs till för en viss händelse. Det här är ett användbart standardvärde som hjälper dig att hitta minnesläckor. Med metoden emitter.setMaxListeners() kan gränsen ändras för den här specifika EventEmitter instansen. Värdet kan anges till Infinity (eller 0) för att ange ett obegränsat antal lyssnare.
Returnerar en referens till EventEmitter, så att anrop kan länkas.
function setMaxListeners(n: number): Readable
Parametrar
- n
-
number
Returer
Ärvt från Stream.setMaxListeners
[captureRejectionSymbol](Error, string | symbol, any[])
Metoden Symbol.for('nodejs.rejection') anropas om en löftesavvisning sker när en händelse sänds ut och captureRejections aktiveras på sändaren.
Det är möjligt att använda events.captureRejectionSymbol istället för 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[])
Parametrar
- error
-
Error
- event
-
string | symbol
- args
-
any[]
Ärvt från Stream.__@captureRejectionSymbol@180