Readable interface
- Extends
-
Stream
Vlastnosti
| closed | Je po |
| destroyed | Je to |
| errored | Vrací chybu, pokud byl proud zničen chybou. |
| readable | Je |
| readable |
Vrátí, zda byl proud zničen nebo chybně použit, než vysílá |
| readable |
Vrací, zda |
| readable |
Getter pro vlastnost |
| readable |
Stává se |
| readable |
Tato vlastnost odráží současný stav |
| readable |
Při vytváření tohoto vrátí |
| readable |
Tato vlastnost obsahuje počet bajtů (nebo objektů) ve frontě připravených ke čtení. Hodnota poskytuje introspekční data týkající se stavu . |
| readable |
Getter pro vlastnost |
Metody
| add |
|
| add |
Alias pro |
| compose(Writable |
Tato metoda také umožňuje poskytnout a Další informace naleznete na |
| destroy(Error) | Zničte stream. Volitelně vyvolat Jakmile Implementátoři by tuto metodu neměli přepsat, ale místo toho implementovat |
| drop(number, Abortable) | Tato metoda vrací nový proud s prvními limitními bloky vypuštěnými od začátku. |
| emit(string | symbol, any[]) | |
| emit<E>(E, Readable |
Synchronně volá všechny naslouchací procesy zaregistrované pro událost s názvem Vrátí
|
| every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
Tato metoda je podobná a |
| filter((data: any, options?: Abortable) => boolean | Promise<boolean>, Readable |
Tato metoda umožňuje filtrování proudu. Pro každý blok v proudu se volá funkce fn a pokud vrátí pravdivou hodnotu, blok bude předán výslednému proudu.
Pokud funkce fn vrátí slib – ten slib bude ed |
| find((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
|
| find<T>((data: any, options?: Abortable) => data is T, Pick<Readable |
Tato metoda je podobná a |
| flat |
Tato metoda vrací nový proud tak, že na každý úsek proudu aplikuje daný callback a následně výsledek zplošťuje. Je možné vrátit proud nebo jiný iterable či asynchronní iterable z fn a výsledné proudy budou sloučeny (zploštěny) do vráceného proudu. |
| for |
Tato metoda umožňuje iteraci proudu. Pro každý chunk v proudu bude volána funkce fn .
Pokud funkce fn vrátí slib – ten slib bude ed Tato metoda se liší od Tato metoda se liší od naslouchání události |
| is |
Metoda
|
| iterator(Readable |
Iterátor vytvořený touto metodou dává uživatelům možnost zrušit zničení proudu, pokud je smyčka ukončena |
| listener |
|
| listener |
Vrátí počet naslouchacích procesů naslouchajících události s názvem |
| listeners(string | symbol) | |
| listeners<E>(E) | Vrátí kopii pole naslouchacích procesů pro událost s názvem
|
| map((data: any, options?: Abortable) => any, Readable |
Tato metoda umožňuje mapování přes proud. Funkce fn bude volána pro každý chunk v proudu.
Pokud funkce fn vrátí slib – tento slib bude ed |
| off(string | symbol, (args: any[]) => void) | |
| off<E>(E, (args: Readable |
Alias pro |
| on(string | symbol, (args: any[]) => void) | |
| on<E>(E, (args: Readable |
Přidá funkci
Vrátí odkaz na Ve výchozím nastavení se naslouchací procesy událostí vyvolávají v pořadí, v jakém se přidávají. Metodu
|
| once(string | symbol, (args: any[]) => void) | |
| once<E>(E, (args: Readable |
Přidá jednorázovou funkci
Vrátí odkaz na Ve výchozím nastavení se naslouchací procesy událostí vyvolávají v pořadí, v jakém se přidávají. Metodu
|
| pause() | Tato
Metoda |
| prepend |
|
| prepend |
Přidá funkci
Vrátí odkaz na |
| prepend |
|
| prepend |
Přidá jednorázové
Vrátí odkaz na |
| push(any, Buffer |
|
| raw |
|
| raw |
Vrátí kopii pole naslouchacích procesů pro událost s názvem
|
| read(number) | Metoda Volitelný Pokud argument není specifikován, Argument Metoda
Každé volání vrací Proto pro čtení celého obsahu souboru z z ,
Proud Pokud Volání po vysílání události |
| reduce<T>((previous: any, data: any, options?: Abortable) => T) | Tato metoda volá fn na každém bloku proudu v pořadí a předává mu výsledek z výpočtu na předchozím prvku. Vrací slib konečné hodnoty redukce. Pokud není uvedena žádná počáteční hodnota, použije se první část proudu jako počáteční hodnota.
Pokud je proud prázdný, slib je odmítnut vlastností s Funkce reduktora iteruje proud element po prvku, což znamená, že neexistuje parametr souběžnosti ani paralelizismus. Pro současné provedení redukce můžete extrahovat asynchronní funkci do |
| reduce<T>((previous: T, data: any, options?: Abortable) => T, T, Abortable) | |
| remove |
|
| remove |
Odebere všechny naslouchací procesy nebo naslouchací procesy zadané Je vhodné odebrat naslouchací procesy přidané jinde v kódu, zejména pokud byla instance Vrátí odkaz na |
| remove |
|
| remove |
Odebere zadanou
Jakmile se událost vygeneruje, všechny naslouchací procesy, které jsou k ní připojeny v době generování, se volají v pořadí. To znamená, že žádné
Protože jsou posluchači spravováni pomocí interního pole, volání tohoto pole změní poziční indexy každého posluchače registrovaného po jeho odstranění. To nebude mít vliv na pořadí, ve kterém se volají naslouchací procesy, ale znamená to, že všechny kopie pole naslouchacího procesu vrácené metodou Když je jedna funkce přidána jako obslužná rutina několikrát pro jednu událost (jako v příkladu níže),
Vrátí odkaz na |
| resume() | Tato Metoda
Metoda |
| set |
Metoda nastavuje Ve výchozím nastavení není přiřazeno žádné kódování a data ze streamu jsou vrácena jako Proud
|
| some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
Tato metoda je podobná a |
| take(number, Abortable) | Tato metoda vrací nový proud s prvními limitními bloky. |
| to |
Tato metoda umožňuje snadné získání obsahu proudu. Protože tato metoda načte celý stream do paměti, neguje výhody streamů. Je určen pro interoperabilitu a pohodlí, ne jako hlavní způsob konzumace streamů. |
| unpipe(Writable |
Metoda Pokud není specifikováno Pokud je specifikováno
|
| unshift(any, Buffer |
Passing Metoda vkládá Metoda nemůže být volána Vývojáři, kteří často používají
Na rozdíl od push neukončí proces čtení resetováním vnitřního stavu čtecího toku (push). |
| wrap(Readable |
Před Node.js 0.10 streamy neimplementovaly Při použití starší knihovny Node.js, která generuje Používání
|
| [async |
Volá |
| [async |
|
| [to |
Když je příznak povolen, To poskytuje dávkový asynchronní iterátor, který odčerpává vnitřní buffer toku do Vrácený iterátor je označen jako ověřený zdroj, takže
Bez vlajky |
Zděděné metody
| event |
Vrátí pole se seznamem událostí, pro které má emiter zaregistrované naslouchací procesy.
|
| get |
Vrátí aktuální maximální hodnotu naslouchacího procesu pro |
| pipe<T>(T, Pipe |
|
| set |
Ve výchozím nastavení Vrátí odkaz na |
| [capture |
Metoda
|
Podrobnosti vlastnosti
closed
Je po true'close' vysvícení.
closed: boolean
Hodnota vlastnosti
boolean
destroyed
Je to true po readable.destroy() tom, co bylo vyhlášeno.
destroyed: boolean
Hodnota vlastnosti
boolean
errored
Vrací chybu, pokud byl proud zničen chybou.
errored: Error | null
Hodnota vlastnosti
Error | null
readable
Je true , pokud je bezpečné volat read, což znamená, že proud nebyl zničen nebo vysílán 'error' , nebo 'end'.
readable: boolean
Hodnota vlastnosti
boolean
readableAborted
Vrátí, zda byl proud zničen nebo chybně použit, než vysílá 'end'.
readableAborted: boolean
Hodnota vlastnosti
boolean
readableDidRead
Vrací, zda 'data' bylo vysíláno.
readableDidRead: boolean
Hodnota vlastnosti
boolean
readableEncoding
Getter pro vlastnost encoding daného Readable proudu. Vlastnost encoding lze nastavit pomocí metody setEncoded .
readableEncoding: BufferEncoding | null
Hodnota vlastnosti
BufferEncoding | null
readableEnded
readableFlowing
Tato vlastnost odráží současný stav Readable potoka, jak je popsán v části Tři stavy .
readableFlowing: boolean | null
Hodnota vlastnosti
boolean | null
readableHighWaterMark
Při vytváření tohoto vrátí highWaterMarkhodnotu předaného .Readable
readableHighWaterMark: number
Hodnota vlastnosti
number
readableLength
Tato vlastnost obsahuje počet bajtů (nebo objektů) ve frontě připravených ke čtení. Hodnota poskytuje introspekční data týkající se stavu .highWaterMark
readableLength: number
Hodnota vlastnosti
number
readableObjectMode
Getter pro vlastnost objectMode daného Readable proudu.
readableObjectMode: boolean
Hodnota vlastnosti
boolean
Podrobnosti metody
addListener(string | symbol, (args: any[]) => void)
function addListener(eventName: string | symbol, listener: (args: any[]) => void): this
Parametry
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Návraty
this
addListener<E>(E, (args: ReadableEventMap[E]) => void)
Alias pro emitter.on(eventName, listener).
function addListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): this
Parametry
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Návraty
this
compose(WritableStream | WritableStream | TransformStream | (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) je ekvivalent stream.compose(readable, s).
Tato metoda také umožňuje poskytnout a AbortSignal , které při přerušení zničí složený proud.
Další informace naleznete na stream.compose(...streams).
function compose(stream: WritableStream | WritableStream | TransformStream | (source: any) => void, options?: Abortable): Duplex
Parametry
- stream
-
WritableStream | WritableStream | TransformStream | (source: any) => void
- options
-
Abortable
Návraty
Duplex
proud složený z proudu stream.
destroy(Error)
Zničte stream. Volitelně vyvolat 'error' událost a vydat událost 'close' (pokud emitClose není nastaveno na false). Po tomto hovoru čtitelný stream uvolní všechny interní zdroje a následné volání push() budou ignorována.
Jakmile destroy() je volán, všechny další volání budou no-op a žádné další chyby kromě , _destroy() které mohou být vydány jako 'error'.
Implementátoři by tuto metodu neměli přepsat, ale místo toho implementovat readable._destroy().
function destroy(error?: Error): this
Parametry
- error
-
Error
Chyba, která bude předána jako payload v události 'error'
Návraty
this
drop(number, Abortable)
Tato metoda vrací nový proud s prvními limitními bloky vypuštěnými od začátku.
function drop(limit: number, options?: Abortable): Readable
Parametry
- limit
-
number
počet bloků, které se mají vynechat z čitelného.
- options
-
Abortable
Návraty
Stream s limitními bloky vypuštěnými od začátku.
emit(string | symbol, any[])
function emit(eventName: string | symbol, args: any[]): boolean
Parametry
- eventName
-
string | symbol
- args
-
any[]
Návraty
boolean
emit<E>(E, ReadableEventMap[E])
Synchronně volá všechny naslouchací procesy zaregistrované pro událost s názvem eventName, v pořadí, v jakém byly zaregistrovány, předávání zadaných argumentů každému.
Vrátí true, pokud událost měla naslouchací procesy, false jinak.
import { EventEmitter } from 'node:events';
const myEmitter = new EventEmitter();
// First listener
myEmitter.on('event', function firstListener() {
console.log('Helloooo! first listener');
});
// Second listener
myEmitter.on('event', function secondListener(arg1, arg2) {
console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
});
// Third listener
myEmitter.on('event', function thirdListener(...args) {
const parameters = args.join(', ');
console.log(`event with parameters ${parameters} in third listener`);
});
console.log(myEmitter.listeners('event'));
myEmitter.emit('event', 1, 2, 3, 4, 5);
// Prints:
// [
// [Function: firstListener],
// [Function: secondListener],
// [Function: thirdListener]
// ]
// Helloooo! first listener
// event with parameters 1, 2 in second listener
// event with parameters 1, 2, 3, 4, 5 in third listener
function emit<E>(eventName: E, args: ReadableEventMap[E]): boolean
Parametry
- eventName
-
E
- args
-
ReadableEventMap[E]
Návraty
boolean
every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "concurrency" | "signal">)
Tato metoda je podobná a Array.prototype.every volá fn na každý chunk v proudu, aby se ověřilo, zda všechny očekávané návratové hodnoty jsou pravdivé hodnoty fn. Jakmile je volání fn na hodnotě vrácení bloku awaitfalešné, proud je zničen a slib splněn s false.
Pokud všechny volání fn na blokech vrátí pravdivou hodnotu, slib je splněn s true.
function every(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">): Promise<boolean>
Parametry
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
funkce pro volání každého bloku proudu. Ať už asynchronní nebo ne.
- options
-
Pick<ReadableOperatorOptions, "concurrency" | "signal">
Návraty
Promise<boolean>
Slib vyhodnocující na if truefn vrací pravdivou hodnotu pro každý blok.
filter((data: any, options?: Abortable) => boolean | Promise<boolean>, ReadableOperatorOptions)
Tato metoda umožňuje filtrování proudu. Pro každý blok v proudu se volá funkce fn a pokud vrátí pravdivou hodnotu, blok bude předán výslednému proudu.
Pokud funkce fn vrátí slib – ten slib bude ed await.
function filter(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: ReadableOperatorOptions): Readable
Parametry
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
funkce pro filtrování částí proudu. Ať už asynchronní nebo ne.
- options
-
ReadableOperatorOptions
Návraty
Proud filtrovaný predikátem fn.
find((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "concurrency" | "signal">)
function find(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">): Promise<any>
Parametry
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
- options
-
Pick<ReadableOperatorOptions, "concurrency" | "signal">
Návraty
Promise<any>
find<T>((data: any, options?: Abortable) => data is T, Pick<ReadableOperatorOptions, "concurrency" | "signal">)
Tato metoda je podobná a Array.prototype.find volá fn na každý chunk v proudu, aby našla chunk s pravdivou hodnotou fn. Jakmile je očekávaná návratová hodnota fn volání pravdivá, stream je zničen a slib splněn hodnotou, pro kterou fn vrátil pravdivou hodnotu.
Pokud všechny fn volání na blokech vrátí falešnou hodnotu, slib je splněn s undefined.
function find<T>(fn: (data: any, options?: Abortable) => data is T, options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">): Promise<T | undefined>
Parametry
- fn
-
(data: any, options?: Abortable) => data is T
funkce pro volání každého bloku proudu. Ať už asynchronní nebo ne.
- options
-
Pick<ReadableOperatorOptions, "concurrency" | "signal">
Návraty
Promise<T | undefined>
Slib vyhodnocující na první blok, pro který FN vyhodnocoval s pravdivou hodnotou, nebo undefined pokud nebyl nalezen žádný prvek.
flatMap((data: any, options?: Abortable) => any, Pick<ReadableOperatorOptions, "concurrency" | "signal">)
Tato metoda vrací nový proud tak, že na každý úsek proudu aplikuje daný callback a následně výsledek zplošťuje.
Je možné vrátit proud nebo jiný iterable či asynchronní iterable z fn a výsledné proudy budou sloučeny (zploštěny) do vráceného proudu.
function flatMap(fn: (data: any, options?: Abortable) => any, options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">): Readable
Parametry
- fn
-
(data: any, options?: Abortable) => any
funkce pro mapování přes každý chunk v proudu. Možná asynchronní. Může to být stream nebo generátor.
- options
-
Pick<ReadableOperatorOptions, "concurrency" | "signal">
Návraty
Proud plochý s funkcí fn.
forEach((data: any, options?: Abortable) => void | Promise<void>, Pick<ReadableOperatorOptions, "concurrency" | "signal">)
Tato metoda umožňuje iteraci proudu. Pro každý chunk v proudu bude volána funkce fn .
Pokud funkce fn vrátí slib – ten slib bude ed await.
Tato metoda se liší od for await...of smyček tím, že může volitelně zpracovávat bloky současně.
Navíc iteraci lze zastavit pouze tím, forEach že prošla volba signal a přerušila příslušný AbortController, zatímco for await...of může být zastavena pomocí break nebo return.
V obou případech bude proud zničen.
Tato metoda se liší od naslouchání události 'data' tím, že využívá událost readable v základním stroji a může omezit počet souběžných fn hovorů.
function forEach(fn: (data: any, options?: Abortable) => void | Promise<void>, options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">): Promise<void>
Parametry
- fn
-
(data: any, options?: Abortable) => void | Promise<void>
funkce pro volání každého bloku proudu. Ať už asynchronní nebo ne.
- options
-
Pick<ReadableOperatorOptions, "concurrency" | "signal">
Návraty
Promise<void>
slib, až stream skončí.
isPaused()
Metoda readable.isPaused() vrací aktuální provozní stav .Readable
To se používá především mechanismem, který je základem této metody readable.pipe() .
Ve většině typických případů není důvod tuto metodu používat přímo.
const readable = new stream.Readable();
readable.isPaused(); // === false
readable.pause();
readable.isPaused(); // === true
readable.resume();
readable.isPaused(); // === false
function isPaused(): boolean
Návraty
boolean
iterator(ReadableIteratorOptions)
Iterátor vytvořený touto metodou dává uživatelům možnost zrušit zničení proudu, pokud je smyčka ukončena for await...of , returnbreak, nebo throw, nebo pokud by iterátor měl proud zničit, pokud během iterace vydal chybu.
function iterator(options?: ReadableIteratorOptions): AsyncIterator<any>
Parametry
- options
-
ReadableIteratorOptions
Návraty
AsyncIterator<any>
listenerCount(string | symbol, (args: any[]) => void)
function listenerCount(eventName: string | symbol, listener?: (args: any[]) => void): number
Parametry
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Návraty
number
listenerCount<E>(E, (args: ReadableEventMap[E]) => void)
Vrátí počet naslouchacích procesů naslouchajících události s názvem eventName.
Pokud listener, vrátí se v seznamu naslouchacích procesů události, kolikrát se naslouchací proces najde.
function listenerCount<E>(eventName: E, listener?: (args: ReadableEventMap[E]) => void): number
Parametry
- eventName
-
E
Název události, pro kterou se naslouchá
- listener
-
(args: ReadableEventMap[E]) => void
Funkce obslužné rutiny události
Návraty
number
listeners(string | symbol)
function listeners(eventName: string | symbol): (args: any[]) => void[]
Parametry
- eventName
-
string | symbol
Návraty
(args: any[]) => void[]
listeners<E>(E)
Vrátí kopii pole naslouchacích procesů pro událost s názvem eventName.
server.on('connection', (stream) => {
console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection')));
// Prints: [ [Function] ]
function listeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]
Parametry
- eventName
-
E
Návraty
(args: ReadableEventMap[E]) => void[]
map((data: any, options?: Abortable) => any, ReadableOperatorOptions)
Tato metoda umožňuje mapování přes proud. Funkce fn bude volána pro každý chunk v proudu.
Pokud funkce fn vrátí slib – tento slib bude ed awaitpřed předáním do resultingového proudu.
function map(fn: (data: any, options?: Abortable) => any, options?: ReadableOperatorOptions): Readable
Parametry
- fn
-
(data: any, options?: Abortable) => any
funkce pro mapování přes každý chunk v proudu. Ať už asynchronní nebo ne.
- options
-
ReadableOperatorOptions
Návraty
Stream mapovaný funkcí fn.
off(string | symbol, (args: any[]) => void)
function off(eventName: string | symbol, listener: (args: any[]) => void): this
Parametry
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Návraty
this
off<E>(E, (args: ReadableEventMap[E]) => void)
Alias pro emitter.removeListener().
function off<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): this
Parametry
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Návraty
this
on(string | symbol, (args: any[]) => void)
function on(eventName: string | symbol, listener: (args: any[]) => void): this
Parametry
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Návraty
this
on<E>(E, (args: ReadableEventMap[E]) => void)
Přidá funkci listener na konec pole naslouchacích procesů pro událost s názvem eventName. Nejsou provedeny žádné kontroly, abyste zjistili, jestli už listener byla přidána. Více volání, která předávají stejnou kombinaci eventName a listener, způsobí přidání listener a volání několikrát.
server.on('connection', (stream) => {
console.log('someone connected!');
});
Vrátí odkaz na EventEmitter, aby volání bylo možné zřetězený.
Ve výchozím nastavení se naslouchací procesy událostí vyvolávají v pořadí, v jakém se přidávají. Metodu emitter.prependListener() lze použít jako alternativu k přidání naslouchacího procesu událostí na začátek pole naslouchacích procesů.
import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.on('foo', () => console.log('a'));
myEE.prependListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
// b
// a
function on<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): this
Parametry
- eventName
-
E
Název události.
- listener
-
(args: ReadableEventMap[E]) => void
Funkce zpětného volání
Návraty
this
once(string | symbol, (args: any[]) => void)
function once(eventName: string | symbol, listener: (args: any[]) => void): this
Parametry
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Návraty
this
once<E>(E, (args: ReadableEventMap[E]) => void)
Přidá jednorázovou funkcilistener pro událost s názvem eventName. Při příštím spuštění eventName se tento naslouchací proces odebere a potom se vyvolá.
server.once('connection', (stream) => {
console.log('Ah, we have our first user!');
});
Vrátí odkaz na EventEmitter, aby volání bylo možné zřetězený.
Ve výchozím nastavení se naslouchací procesy událostí vyvolávají v pořadí, v jakém se přidávají. Metodu emitter.prependOnceListener() lze použít jako alternativu k přidání naslouchacího procesu událostí na začátek pole naslouchacích procesů.
import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.once('foo', () => console.log('a'));
myEE.prependOnceListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
// b
// a
function once<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): this
Parametry
- eventName
-
E
Název události.
- listener
-
(args: ReadableEventMap[E]) => void
Funkce zpětného volání
Návraty
this
pause()
Tato readable.pause() metoda způsobí, že proud v režimu proudění přestane vysílat 'data' události a přepne se z režimu proudění. Jakákoli data, která se stanou dostupná, zůstanou v interním bufferu.
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);
});
Metoda readable.pause() nemá žádný účinek, pokud je zde 'readable' event listener.
function pause(): this
Návraty
this
prependListener(string | symbol, (args: any[]) => void)
function prependListener(eventName: string | symbol, listener: (args: any[]) => void): this
Parametry
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Návraty
this
prependListener<E>(E, (args: ReadableEventMap[E]) => void)
Přidá funkci listener do začínající pole naslouchacích procesů pro událost s názvem eventName. Nejsou provedeny žádné kontroly, abyste zjistili, jestli už listener byla přidána. Více volání, která předávají stejnou kombinaci eventName a listener, způsobí přidání listener a volání několikrát.
server.prependListener('connection', (stream) => {
console.log('someone connected!');
});
Vrátí odkaz na EventEmitter, aby volání bylo možné zřetězený.
function prependListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): this
Parametry
- eventName
-
E
Název události.
- listener
-
(args: ReadableEventMap[E]) => void
Funkce zpětného volání
Návraty
this
prependOnceListener(string | symbol, (args: any[]) => void)
function prependOnceListener(eventName: string | symbol, listener: (args: any[]) => void): this
Parametry
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Návraty
this
prependOnceListener<E>(E, (args: ReadableEventMap[E]) => void)
Přidá jednorázovélistener funkce pro událost s názvem eventName do začínající pole naslouchacích procesů. Při příštím spuštění eventName se tento naslouchací proces odebere a potom se vyvolá.
server.prependOnceListener('connection', (stream) => {
console.log('Ah, we have our first user!');
});
Vrátí odkaz na EventEmitter, aby volání bylo možné zřetězený.
function prependOnceListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): this
Parametry
- eventName
-
E
Název události.
- listener
-
(args: ReadableEventMap[E]) => void
Funkce zpětného volání
Návraty
this
push(any, BufferEncoding)
function push(chunk: any, encoding?: BufferEncoding): boolean
Parametry
- chunk
-
any
- encoding
-
BufferEncoding
Návraty
boolean
rawListeners(string | symbol)
function rawListeners(eventName: string | symbol): (args: any[]) => void[]
Parametry
- eventName
-
string | symbol
Návraty
(args: any[]) => void[]
rawListeners<E>(E)
Vrátí kopii pole naslouchacích procesů pro událost s názvem eventName, včetně všech obálky (například těch vytvořených .once()).
import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.once('log', () => console.log('log once'));
// Returns a new Array with a function `onceWrapper` which has a property
// `listener` which contains the original listener bound above
const listeners = emitter.rawListeners('log');
const logFnWrapper = listeners[0];
// Logs "log once" to the console and does not unbind the `once` event
logFnWrapper.listener();
// Logs "log once" to the console and removes the listener
logFnWrapper();
emitter.on('log', () => console.log('log persistently'));
// Will return a new Array with a single function bound by `.on()` above
const newListeners = emitter.rawListeners('log');
// Logs "log persistently" twice
newListeners[0]();
emitter.emit('log');
function rawListeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]
Parametry
- eventName
-
E
Návraty
(args: ReadableEventMap[E]) => void[]
read(number)
Metoda readable.read() čte data z interního bufferu a vrací je. Pokud nejsou k dispozici žádná data ke čtení, vrací se. null Ve výchozím nastavení jsou data vrácena jako objekt, Buffer pokud nebylo zadáno kódování pomocí readable.setEncoding() metody nebo pokud proud nepracuje v objektovém režimu.
Volitelný size argument určuje konkrétní počet bajtů k přečtení. Pokud size nejsou k dispozici bajty ke čtení, vrátí se, nullpokud proud neskončil, v takovém případě budou vrácena všechna data zbývající v interním bufferu.
Pokud argument není specifikován, size vrátí se všechna data obsažená v interním bufferu.
Argument size musí být menší nebo roven 1 GiB.
Metoda readable.read() by měla být vyvolána pouze u Readable streamů pracujících v režimu pozastavení. V režimu průtoku se automaticky volá, readable.read() dokud není vnitřní buffer zcela vyprázdněn.
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.');
});
Každé volání vrací readable.read() část dat, nebo null. Kusy nejsou spojovány. K požití všech dat, která jsou aktuálně v bufferu, je nutná smyčka while . Při čtení velkého souboru .read() se může vrátit null, že jste spotřebovali veškerý dosud uložený obsah, ale stále je k dispozici další data, která ještě nejsou uložena. V tomto případě bude vyslána nová 'readable' událost, když je v bufferu více dat. Nakonec bude událost 'end' vysílána, až nebudou k dispozici další data.
Proto pro čtení celého obsahu souboru z z , readableje nutné shromáždit bloky napříč více 'readable' událostmi:
const chunks = [];
readable.on('readable', () => {
let chunk;
while (null !== (chunk = readable.read())) {
chunks.push(chunk);
}
});
readable.on('end', () => {
const content = chunks.join('');
});
Proud Readable v objektovém režimu vždy vrátí jednu položku z volání do readable.read(size), bez ohledu na hodnotu size argumentu.
Pokud readable.read() metoda vrátí úsek dat, 'data' bude také vygenerována událost.
Volání po vysílání události 'end' se vrátí.null Chyba za běhu se nezobrazí.
function read(size?: number): any
Parametry
- size
-
number
Volitelný argument pro určení, kolik dat má být přečteno.
Návraty
any
reduce<T>((previous: any, data: any, options?: Abortable) => T)
Tato metoda volá fn na každém bloku proudu v pořadí a předává mu výsledek z výpočtu na předchozím prvku. Vrací slib konečné hodnoty redukce.
Pokud není uvedena žádná počáteční hodnota, použije se první část proudu jako počáteční hodnota.
Pokud je proud prázdný, slib je odmítnut vlastností s TypeErrorERR_INVALID_ARGS kódem.
Funkce reduktora iteruje proud element po prvku, což znamená, že neexistuje parametr souběžnosti ani paralelizismus. Pro současné provedení redukce můžete extrahovat asynchronní funkci do readable.map metody.
function reduce<T>(fn: (previous: any, data: any, options?: Abortable) => T): Promise<T>
Parametry
- fn
-
(previous: any, data: any, options?: Abortable) => T
redukční funkce, která volá každý chunk v streamu. Ať už asynchronní nebo ne.
Návraty
Promise<T>
slib konečné hodnoty snížení.
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>
Parametry
- fn
-
(previous: T, data: any, options?: Abortable) => T
- initial
-
T
- options
-
Abortable
Návraty
Promise<T>
removeAllListeners(string | symbol)
function removeAllListeners(eventName?: string | symbol): this
Parametry
- eventName
-
string | symbol
Návraty
this
removeAllListeners<E>(E)
Odebere všechny naslouchací procesy nebo naslouchací procesy zadané eventName.
Je vhodné odebrat naslouchací procesy přidané jinde v kódu, zejména pokud byla instance EventEmitter vytvořená nějakou jinou komponentou nebo modulem (např. sokety nebo streamy souborů).
Vrátí odkaz na EventEmitter, aby volání bylo možné zřetězený.
function removeAllListeners<E>(eventName?: E): this
Parametry
- eventName
-
E
Návraty
this
removeListener(string | symbol, (args: any[]) => void)
function removeListener(eventName: string | symbol, listener: (args: any[]) => void): this
Parametry
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Návraty
this
removeListener<E>(E, (args: ReadableEventMap[E]) => void)
Odebere zadanou listener z pole naslouchacího procesu pro událost s názvem eventName.
const callback = (stream) => {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
removeListener() odebere z pole naslouchacího procesu nanejvýš jednu instanci naslouchacího procesu. Pokud byl některý jeden naslouchací proces přidán vícekrát do pole naslouchacího procesu pro zadané eventName, pak removeListener() musí být volána vícekrát, aby bylo možné odebrat každou instanci.
Jakmile se událost vygeneruje, všechny naslouchací procesy, které jsou k ní připojeny v době generování, se volají v pořadí. To znamená, že žádné removeListener() nebo volání removeAllListeners() vysílání a před dokončením posledního posluchače je neodstraní z emit() probíhajících. Následné události se chovají podle očekávání.
import { EventEmitter } from 'node:events';
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
const callbackA = () => {
console.log('A');
myEmitter.removeListener('event', callbackB);
};
const callbackB = () => {
console.log('B');
};
myEmitter.on('event', callbackA);
myEmitter.on('event', callbackB);
// callbackA removes listener callbackB but it will still be called.
// Internal listener array at time of emit [callbackA, callbackB]
myEmitter.emit('event');
// Prints:
// A
// B
// callbackB is now removed.
// Internal listener array [callbackA]
myEmitter.emit('event');
// Prints:
// A
Protože jsou posluchači spravováni pomocí interního pole, volání tohoto pole změní poziční indexy každého posluchače registrovaného po jeho odstranění. To nebude mít vliv na pořadí, ve kterém se volají naslouchací procesy, ale znamená to, že všechny kopie pole naslouchacího procesu vrácené metodou emitter.listeners() bude potřeba znovu vytvořit.
Když je jedna funkce přidána jako obslužná rutina několikrát pro jednu událost (jako v příkladu níže), removeListener() odebere naposledy přidanou instanci. V příkladu se odebere naslouchací proces once('ping'):
import { EventEmitter } from 'node:events';
const ee = new EventEmitter();
function pong() {
console.log('pong');
}
ee.on('ping', pong);
ee.once('ping', pong);
ee.removeListener('ping', pong);
ee.emit('ping');
ee.emit('ping');
Vrátí odkaz na EventEmitter, aby volání bylo možné zřetězený.
function removeListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): this
Parametry
- eventName
-
E
- listener
-
(args: ReadableEventMap[E]) => void
Návraty
this
resume()
Tato readable.resume() metoda způsobí, že explicitně Readable pozastavený proud obnoví vysílání 'data' událostí a přepne proud do režimu proudění.
Metoda readable.resume() může být použita k úplnému využití dat z proudu, aniž by se tato data skutečně zpracovávala:
getReadableStreamSomehow()
.resume()
.on('end', () => {
console.log('Reached the end, but did not read anything.');
});
Metoda readable.resume() nemá žádný účinek, pokud je zde 'readable' event listener.
function resume(): this
Návraty
this
setEncoding(BufferEncoding)
Metoda nastavuje readable.setEncoding() kódování znaků pro data čtená Readable ze streamu.
Ve výchozím nastavení není přiřazeno žádné kódování a data ze streamu jsou vrácena jako Buffer objekty. Nastavení kódování způsobí, že data proudu jsou vrácena jako řetězce zadaného kódování, nikoli jako Buffer objekty. Například volání readable.setEncoding('utf8') způsobí, že výstupní data budou interpretována jako UTF-8 data a předána jako řetězce. Volání readable.setEncoding('hex') způsobí, že data budou zakódována v hexadecimálním řetězcovém formátu.
Proud Readable správně zpracuje vícebajtové znaky doručené proudem, které by jinak byly nesprávně dekódovány, pokud by byly jednoduše odebrány jako Buffer objekty.
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): this
Parametry
- encoding
-
BufferEncoding
Kódování, které se má použít.
Návraty
this
some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "concurrency" | "signal">)
Tato metoda je podobná a Array.prototype.some volá fn na každý chunk v proudu, dokud není očekávaná návratová hodnota true (nebo jakákoli pravdivá hodnota). Jakmile je volací hodnota fn na úseku awaited return pravdivá, stream je zničen a slib splněn s true.
Pokud žádné z volání fn na blokech nevrátí pravdivou hodnotu, slib je splněn pomocí false.
function some(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">): Promise<boolean>
Parametry
- fn
-
(data: any, options?: Abortable) => boolean | Promise<boolean>
funkce pro volání každého bloku proudu. Ať už asynchronní nebo ne.
- options
-
Pick<ReadableOperatorOptions, "concurrency" | "signal">
Návraty
Promise<boolean>
slib vyhodnocující na , true pokud fn vrací pravdivou hodnotu alespoň pro jeden z bloků.
take(number, Abortable)
Tato metoda vrací nový proud s prvními limitními bloky.
function take(limit: number, options?: Abortable): Readable
Parametry
- limit
-
number
Počet částí, které lze vzít z čitelného.
- options
-
Abortable
Návraty
stream s omezeným limitem úseků.
toArray(Abortable)
Tato metoda umožňuje snadné získání obsahu proudu.
Protože tato metoda načte celý stream do paměti, neguje výhody streamů. Je určen pro interoperabilitu a pohodlí, ne jako hlavní způsob konzumace streamů.
function toArray(options?: Abortable): Promise<any[]>
Parametry
- options
-
Abortable
Návraty
Promise<any[]>
slib obsahující pole s obsahem proudu.
unpipe(WritableStream)
Metoda readable.unpipe() odpojí proud, Writable který byl dříve připojen, pomocí metody potrubí .
Pokud není specifikováno destination , jsou všechny trubky odpojeny.
Pokud je specifikováno destination , ale není pro něj nastaveno žádné potrubí, metoda nic neudělá.
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): this
Parametry
- destination
-
WritableStream
Volitelné specifické proudění pro odpojení potrubí
Návraty
this
unshift(any, BufferEncoding)
Passing chunk as null signalizuje konec proudu (EOF) a chová se stejně jako readable.push(null), po čemž již nelze zapisovat další data. EOF signál je umístěn na konci bufferu a všechna uložená data budou stále vyčištěna.
Metoda vkládá readable.unshift() část dat zpět do interního bufferu. To je užitečné v určitých situacích, kdy je stream spotřebován kódem, který potřebuje "odkonzumovat" určité množství dat, která optimisticky vytáhl ze zdroje, aby mohla být data předána jiné straně.
Metoda nemůže být volána stream.unshift(chunk) po vyvolání události 'end' , jinak bude vyhozena chyba za běhu.
Vývojáři, kteří často používají stream.unshift() , by měli zvážit přechod na používání Transform streamu. Více informací najdete v této sekci.API for stream implementers
// 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;
}
}
}
Na rozdíl od push neukončí proces čtení resetováním vnitřního stavu čtecího toku (push). stream.unshift(chunk)
To může způsobit neočekávané výsledky, pokud readable.unshift() je vyvoláno během čtení (tj. z _read implementace na vlastním toku). Následování volání na readable.unshift() s okamžitým push správně resetuje stav čtení, avšak je nejlepší se volání readable.unshift() během čtení jednoduše vyhnout.
function unshift(chunk: any, encoding?: BufferEncoding)
Parametry
- chunk
-
any
Část dat, která se musí vrátit zpět do četné fronty. Pro proudy, které nefungují v objektovém režimu, chunk musí být {string}, {Buffer}, {TypedArray}, {DataView} nebo null. Pro objektové proudy může být chunk jakákoli hodnota JavaScriptu.
- encoding
-
BufferEncoding
Kódování bloků řetězců. Musí být platné kódování Buffer , například 'utf8' nebo 'ascii'.
wrap(ReadableStream)
Před Node.js 0.10 streamy neimplementovaly node:stream celé API modulů tak, jak je nyní definováno. (Více informací naleznete zde Compatibility .)
Při použití starší knihovny Node.js, která generuje 'data' události a má pauzovací metodu pouze poradní, lze tuto metodu použít k vytvoření proudureadable.wrap(), Readable který používá starý proud jako zdroj dat.
Používání readable.wrap() bude zřídka nutné, ale metoda byla poskytnuta jako pohodlí pro interakci se staršími Node.js aplikacemi a knihovnami.
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): this
Parametry
- stream
-
ReadableStream
"Starý styl" čitelný stream
Návraty
this
[asyncDispose]()
Volá readable.destroy() s a AbortError vrací slib, který se splní, až stream skončí.
function [asyncDispose](): Promise<void>
Návraty
Promise<void>
[asyncIterator]()
function [asyncIterator](): AsyncIterator<any>
Návraty
AsyncIterator<any>
AsyncIterator aby potok plně spotřeboval.
[toAsyncStreamable]()
Když je příznak povolen, --experimental-stream-iter streamy implementují protokol, Readable což umožňuje efektivní spotřebu Stream.toAsyncStreamable API pro tento příznakstream/iter.
To poskytuje dávkový asynchronní iterátor, který odčerpává vnitřní buffer toku do Uint8Array[] dávek, čímž amortizuje režii Symbol.asyncIterator Promise na jeden chunk standardní cesty. U toků v bajtovém režimu jsou bloky přímo vydávány jako Buffer instance (které jsou Uint8Array podtřídami).
Pro objektové nebo kódované toky je každý blok normalizován na před Uint8Array batchováním.
Vrácený iterátor je označen jako ověřený zdroj, takže from() jej předává bez další normalizace.
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'
Bez vlajky --experimental-stream-iter volání této metody hodí ERR_STREAM_ITER_MISSING_FLAG.
function [toAsyncStreamable](): ByteReadableStream
Návraty
ByteReadableStream
Podrobnosti zděděných metod
eventNames()
Vrátí pole se seznamem událostí, pro které má emiter zaregistrované naslouchací procesy.
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)[]
Návraty
(string | symbol)[]
Děděno od Stream.eventNames
getMaxListeners()
Vrátí aktuální maximální hodnotu naslouchacího procesu pro EventEmitter, která je buď nastavena emitter.setMaxListeners(n), nebo je výchozí hodnota events.defaultMaxListeners.
function getMaxListeners(): number
Návraty
number
Děděno od Stream.getMaxListeners
pipe<T>(T, PipeOptions)
function pipe<T>(destination: T, options?: PipeOptions): T
Parametry
- destination
-
T
- options
-
PipeOptions
Návraty
T
Děděno od Stream.pipe
setMaxListeners(number)
Ve výchozím nastavení EventEmitters zobrazí upozornění, pokud se pro konkrétní událost přidá více než 10 naslouchací procesy. Toto je užitečné výchozí nastavení, které pomáhá najít nevrácenou paměť. Metoda emitter.setMaxListeners() umožňuje upravit limit pro tuto konkrétní instanci EventEmitter. Hodnotu lze nastavit na Infinity (nebo 0), aby bylo možné označit neomezený počet naslouchacích procesů.
Vrátí odkaz na EventEmitter, aby volání bylo možné zřetězený.
function setMaxListeners(n: number): this
Parametry
- n
-
number
Návraty
this
Děděno od Stream.setMaxPosluchači
[captureRejectionSymbol](Error, string | symbol, any[])
Metoda Symbol.for('nodejs.rejection') se používá v případě, že při vysílání události dojde k odmítnutí slibu a captureRejections je na emitoru povolena.
Je možné použít events.captureRejectionSymbol místo .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[])
Parametry
- error
-
Error
- event
-
string | symbol
- args
-
any[]
Zděděno z Streamu. [zachyceOdmítnutíSymbol]