RetriableReadableStream class

K DISPOZICI POUZE V NODE.JS RUNTIME. Node.js ReadableStream se bude interně opakovat, když interní ReadableStream neočekávaně skončí.

Extends

Readable

Konstruktory

RetriableReadableStream(Aborter, ReadableStream, ReadableStreamGetter, number, number, IRetriableReadableStreamOptions)

Vytvoří instanci RetriableReadableStream.

Vlastnosti

destroyed

Je true po zavolání readable.destroy().

readable

Je true, pokud je bezpečné volat readable.read(), což znamená, že stream nebyl zničen nebo vygenerován 'error' nebo 'end'.

readableAborted

Vrátí, zda byl datový proud zničen nebo chybován před generováním 'end'.

readableDidRead

Vrátí, zda 'data' byl vygenerován.

readableEncoding

Getter pro vlastnost encoding daného datového proudu Readable. Vlastnost encodinglze nastavit pomocí metody readable.setEncoding().

readableEnded

Jakmile se true událost vygeneruje, stane se 'end'.

readableFlowing

Tato vlastnost odráží aktuální stav datového proudu Readable, jak je popsáno v části Three states.

readableHighWaterMark

Vrátí hodnotu highWaterMark předán při vytváření tohoto Readable.

readableLength

Tato vlastnost obsahuje počet bajtů (nebo objektů) ve frontě, které jsou připravené ke čtení. Hodnota poskytuje údaje o introspekci týkající se stavu highWaterMark.

readableObjectMode

Getter pro vlastnost objectMode daného datového proudu Readable.

Metody

addListener("close", () => void)

Emitor události Definované události v dokumentech, včetně:

  1. zavřít
  2. data
  3. konec
  4. chyba
  5. pozastavit
  6. čitelný
  7. pokračovat
addListener("data", (chunk: any) => void)
addListener("end", () => void)
addListener("error", (err: Error) => void)
addListener("pause", () => void)
addListener("readable", () => void)
addListener("resume", () => void)
addListener(string | symbol, (args: any[]) => void)
destroy(Error)

Zničte stream. Volitelně vygeneruje událost 'error' a vygeneruje událost 'close'(pokud není emitClose nastavená na false). Po tomto volání bude čitelný datový proud vydávat všechny interní prostředky a následná volání push()budou ignorována. Po volání destroy() budou další volání no-op a žádné další chyby s výjimkou _destroy() mohou být generovány jako 'error'.

Implementátory by neměly tuto metodu přepsat, ale místo toho implementovat readable._destroy().

emit("close")
emit("data", any)
emit("end")
emit("error", Error)
emit("pause")
emit("readable")
emit("resume")
emit(string | symbol, any[])
eventNames()

Vrátí pole se seznamem událostí, pro které má emiter zaregistrované naslouchací procesy. Hodnoty v poli jsou řetězce nebo Symbols.

const EventEmitter = require('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) ]
from(Iterable<any> | AsyncIterable<any>, ReadableOptions)

Metoda utility pro vytváření čitelných datových proudů z iterátorů.

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 <xref:defaultMaxListeners>.

isDisturbed(Readable | ReadableStream)

Vrátí, zda byl datový proud načten nebo zrušen.

isPaused()

Metoda readable.isPaused() vrátí aktuální provozní stavReadable. Používá se primárně mechanismem, který je základemreadable.pipe() metody. Ve většině typických případů nebude možné tuto metodu použít přímo.

const readable = new stream.Readable();

readable.isPaused(); // === false
readable.pause();
readable.isPaused(); // === true
readable.resume();
readable.isPaused(); // === false
listenerCount(string | symbol)

Vrátí počet naslouchacích procesů naslouchajících události s názvem eventName.

listeners(string | symbol)

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] ]
off(string | symbol, (args: any[]) => void)

Alias pro emitter.removeListener().

on("close", () => void)
on("data", (chunk: any) => void)
on("end", () => void)
on("error", (err: Error) => void)
on("pause", () => void)
on("readable", () => void)
on("resume", () => void)
on(string | symbol, (args: any[]) => void)
once("close", () => void)
once("data", (chunk: any) => void)
once("end", () => void)
once("error", (err: Error) => void)
once("pause", () => void)
once("readable", () => void)
once("resume", () => void)
once(string | symbol, (args: any[]) => void)
pause()

Metoda readable.pause() způsobí, že datový proud v režimu toku zastaví generování 'data' událostí a vypne tok režimu. Všechna data, která budou k dispozici, zůstanou v interní vyrovnávací paměti.

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ý vliv, pokud existuje naslouchací proces 'readable'událostí.

pipe<T>(T, undefined | Object)
prependListener("close", () => void)
prependListener("data", (chunk: any) => void)
prependListener("end", () => void)
prependListener("error", (err: Error) => void)
prependListener("pause", () => void)
prependListener("readable", () => void)
prependListener("resume", () => void)
prependListener(string | symbol, (args: any[]) => void)
prependOnceListener("close", () => void)
prependOnceListener("data", (chunk: any) => void)
prependOnceListener("end", () => void)
prependOnceListener("error", (err: Error) => void)
prependOnceListener("pause", () => void)
prependOnceListener("readable", () => void)
prependOnceListener("resume", () => void)
prependOnceListener(string | symbol, (args: any[]) => void)
push(any, BufferEncoding)
rawListeners(string | symbol)

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()).

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');
read(undefined | number)

Metoda readable.read() stáhne některá data z interní vyrovnávací paměti a vrátí je. Pokud nejsou k dispozici žádná data ke čtení, null se vrátí. Ve výchozím nastavení se data vrátí jako objekt Buffer, pokud nebylo zadáno kódování pomocí metody readable.setEncoding() nebo stream pracuje v režimu objektu. Volitelný argument size určuje konkrétní počet bajtů, které se mají přečíst. Pokudsize bajty nejsou k dispozici ke čtení, null se vrátí _unless_the datový proud skončí, v takovém případě se vrátí všechna data zbývající v interní vyrovnávací paměti.

Pokud není zadaný argument size, vrátí se všechna data obsažená v interní vyrovnávací paměti.

Argument size musí být menší nebo roven 1 GiB.

Metoda readable.read() by měla být volána pouze u datových proudů Readable provozovaných v pozastaveném režimu. V režimu toku se readable.read() volá automaticky, dokud se vnitřní vyrovnávací paměť plně vyprázdní.

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í readable.read() vrátí blok dat nebo null. Bloky dat nejsou zřetězeny. Smyčka while je nezbytná ke spotřebování všech dat v současné době ve vyrovnávací paměti. Při čtení velkého souboru .read() se může vrátit null, spotřeboval veškerý obsah uložený v vyrovnávací paměti, ale stále existuje více dat, která ještě nejsou uložena do vyrovnávací paměti. V takovém případě se vygeneruje nová událost 'readable', když bude ve vyrovnávací paměti více dat. Nakonec se událost 'end' vygeneruje, když už nebudou k dispozici žádná další data.

Proto ke čtení celého obsahu souboru z readableje nutné shromažďovat bloky dat napříč několika událostmi 'readable':

const chunks = [];

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

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

Datový proud Readable v režimu objektu vždy vrátí jednu položku z volání readable.read(size)bez ohledu na hodnotu argumentusize.

Pokud readable.read() metoda vrátí blok dat, vygeneruje se také událost 'data'.

Volání <xref:read> po vygenerování události 'end' vrátí null. Nedojde k žádné chybě za běhu.

removeAllListeners(string | symbol)

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ý.

removeListener("close", () => void)
removeListener("data", (chunk: any) => void)
removeListener("end", () => void)
removeListener("error", (err: Error) => void)
removeListener("pause", () => void)
removeListener("readable", () => void)
removeListener("resume", () => void)
removeListener(string | symbol, (args: any[]) => void)
resume()

Metoda readable.resume() způsobí, že explicitně pozastavený datový proud Readable obnoví generování 'data' událostí a přepne stream do režimu toku. Metodu readable.resume() lze použít k úplnému využití dat z datového proudu bez skutečného zpracování jakýchkoli těchto dat:

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

Metoda readable.resume() nemá žádný vliv, pokud existuje naslouchací proces 'readable'událostí.

setEncoding(BufferEncoding)

Metoda readable.setEncoding() nastaví kódování znaků pro data načtená z datového proudu Readable. Ve výchozím nastavení není přiřazeno žádné kódování a stream data budou vrácena jakoBuffer objekty. Nastavení kódování způsobí, že se data datového proudu vrátí jako řetězce zadaného kódování, nikoli jako objekty Buffer. Volání readable.setEncoding('utf8') například způsobí, že se výstupní data interpretují jako data UTF-8 a předají se jako řetězce. Voláníreadable.setEncoding('hex') způsobí kódování dat v šestnáctkovém řetězcovém formátu.

Datový proud Readable správně zpracuje více bajtové znaky doručované prostřednictvím datového proudu, které by jinak byly nesprávně dekódovány, pokud by se jednoduše stáhly z datového proudu 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);
});
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 je možné nastavit naInfinity (nebo 0) a označit neomezený počet naslouchacích procesů. Vrátí odkaz na EventEmitter, aby volání bylo možné zřetězený.

unpipe(NodeJS.WritableStream)

Metoda readable.unpipe() odpojte dříve připojený datový proud Writable pomocí metody <xref:pipe>. Pokud není zadaný destination, všechny kanály jsou odpojeny.

Pokud je zadaná destination, ale pro ni není nastaven žádný kanál, metoda nic nedělá.

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

Předávání chunk jako null signalizuje konec datového proudu (EOF) a chová se stejně jako readable.push(null), po kterém nelze zapisovat žádná další data. Signál EOF se umístí na konec vyrovnávací paměti a všechna data ve vyrovnávací paměti budou stále vyprázdněna. Metoda readable.unshift() odešle blok dat zpět do interní vyrovnávací paměti. To je užitečné v určitých situacích, kdy se stream spotřebovává kódem, který potřebuje "zrušit využití" určitého množství dat, která optimisticky vytáhl ze zdroje, aby bylo možné data předat některé jiné straně.

Metodu stream.unshift(chunk) nelze volat po vygenerování události 'end' nebo dojde k chybě za běhu.

Vývojáři, kteří používají stream.unshift() často zvažují přechod na použití datového proudu Transform. Další informace najdete v části 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).
const { StringDecoder } = require('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.match(/\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);
      } else {
        // Still reading the header.
        header += str;
      }
    }
  }
}

Na rozdíl od <xref:push>stream.unshift(chunk) proces čtení neukončí resetováním interního stavu čtení datového proudu. To může způsobit neočekávané výsledky, pokud se při čtení volá readable.unshift() (tj. z implementace <xref:_read> ve vlastním datovém proudu). Po volání readable.unshift() s okamžitou <xref:push> odpovídajícím způsobem resetuje stav čtení, ale je nejlepší se vyhnout volání readable.unshift() při čtení.

wrap(ReadableStream)

Před Node.js 0.10 neimplementovaly streamy celé rozhraní API modulu stream, protože je aktuálně definované. (Další informace najdete v Compatibility.) Při použití starší knihovny Node.js, která generuje události 'data' a má <xref:pause> metodu, která je pouze poradcem, lze metodureadable.wrap() použít k vytvoření Readable datového proudu, který jako zdroj dat používá starý datový proud.

Zřídka bude nutné použít readable.wrap(), ale metoda byla poskytována jako pohodlí pro interakci se staršími Node.js aplikacemi a knihovnami.

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

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

Podrobnosti konstruktoru

RetriableReadableStream(Aborter, ReadableStream, ReadableStreamGetter, number, number, IRetriableReadableStreamOptions)

Vytvoří instanci RetriableReadableStream.

new RetriableReadableStream(aborter: Aborter, source: ReadableStream, getter: ReadableStreamGetter, offset: number, count: number, options?: IRetriableReadableStreamOptions)

Parametry

aborter
Aborter

Vytvoření nové instance Aborter s Aborter.none nebo Aborter.timeout(), goto dokumenty Aborter pro další příklady o zrušení žádosti

source

ReadableStream

Aktuální readableStream vrácený z getteru

getter
ReadableStreamGetter

Metoda volání žádosti o stažení, která vrací nový ReadableStream ze zadaného posunu

offset

number

Posun pozice v původním zdroji dat ke čtení

count

number

Kolik dat v původním zdroji dat se má číst

Podrobnosti vlastnosti

destroyed

Je true po zavolání readable.destroy().

destroyed: boolean

Hodnota vlastnosti

boolean

readable

Je true, pokud je bezpečné volat readable.read(), což znamená, že stream nebyl zničen nebo vygenerován 'error' nebo 'end'.

readable: boolean

Hodnota vlastnosti

boolean

readableAborted

Vrátí, zda byl datový proud zničen nebo chybován před generováním 'end'.

readableAborted: boolean

Hodnota vlastnosti

boolean

readableDidRead

Vrátí, zda 'data' byl vygenerován.

readableDidRead: boolean

Hodnota vlastnosti

boolean

readableEncoding

Getter pro vlastnost encoding daného datového proudu Readable. Vlastnost encodinglze nastavit pomocí metody readable.setEncoding().

readableEncoding: BufferEncoding | null

Hodnota vlastnosti

BufferEncoding | null

readableEnded

Jakmile se true událost vygeneruje, stane se 'end'.

readableEnded: boolean

Hodnota vlastnosti

boolean

readableFlowing

Tato vlastnost odráží aktuální stav datového proudu Readable, jak je popsáno v části Three states.

readableFlowing: boolean | null

Hodnota vlastnosti

boolean | null

readableHighWaterMark

Vrátí hodnotu highWaterMark předán při vytváření tohoto Readable.

readableHighWaterMark: number

Hodnota vlastnosti

number

readableLength

Tato vlastnost obsahuje počet bajtů (nebo objektů) ve frontě, které jsou připravené ke čtení. Hodnota poskytuje údaje o introspekci týkající se stavu highWaterMark.

readableLength: number

Hodnota vlastnosti

number

readableObjectMode

Getter pro vlastnost objectMode daného datového proudu Readable.

readableObjectMode: boolean

Hodnota vlastnosti

boolean

Podrobnosti metody

addListener("close", () => void)

Emitor události Definované události v dokumentech, včetně:

  1. zavřít
  2. data
  3. konec
  4. chyba
  5. pozastavit
  6. čitelný
  7. pokračovat
function addListener(event: "close", listener: () => void)

Parametry

event

"close"

listener

() => void

Návraty

this

addListener("data", (chunk: any) => void)

function addListener(event: "data", listener: (chunk: any) => void)

Parametry

event

"data"

listener

(chunk: any) => void

Návraty

this

addListener("end", () => void)

function addListener(event: "end", listener: () => void)

Parametry

event

"end"

listener

() => void

Návraty

this

addListener("error", (err: Error) => void)

function addListener(event: "error", listener: (err: Error) => void)

Parametry

event

"error"

listener

(err: Error) => void

Návraty

this

addListener("pause", () => void)

function addListener(event: "pause", listener: () => void)

Parametry

event

"pause"

listener

() => void

Návraty

this

addListener("readable", () => void)

function addListener(event: "readable", listener: () => void)

Parametry

event

"readable"

listener

() => void

Návraty

this

addListener("resume", () => void)

function addListener(event: "resume", listener: () => void)

Parametry

event

"resume"

listener

() => void

Návraty

this

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

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

Parametry

event

string | symbol

listener

(args: any[]) => void

Návraty

this

destroy(Error)

Zničte stream. Volitelně vygeneruje událost 'error' a vygeneruje událost 'close'(pokud není emitClose nastavená na false). Po tomto volání bude čitelný datový proud vydávat všechny interní prostředky a následná volání push()budou ignorována. Po volání destroy() budou další volání no-op a žádné další chyby s výjimkou _destroy() mohou být generovány jako 'error'.

Implementátory by neměly tuto metodu přepsat, ale místo toho implementovat readable._destroy().

function destroy(error?: Error)

Parametry

error

Error

Chyba, která se předá jako datová část v události 'error'

emit("close")

function emit(event: "close")

Parametry

event

"close"

Návraty

boolean

emit("data", any)

function emit(event: "data", chunk: any)

Parametry

event

"data"

chunk

any

Návraty

boolean

emit("end")

function emit(event: "end")

Parametry

event

"end"

Návraty

boolean

emit("error", Error)

function emit(event: "error", err: Error)

Parametry

event

"error"

err

Error

Návraty

boolean

emit("pause")

function emit(event: "pause")

Parametry

event

"pause"

Návraty

boolean

emit("readable")

function emit(event: "readable")

Parametry

event

"readable"

Návraty

boolean

emit("resume")

function emit(event: "resume")

Parametry

event

"resume"

Návraty

boolean

emit(string | symbol, any[])

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

Parametry

event

string | symbol

args

any[]

Návraty

boolean

eventNames()

Vrátí pole se seznamem událostí, pro které má emiter zaregistrované naslouchací procesy. Hodnoty v poli jsou řetězce nebo Symbols.

const EventEmitter = require('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()

Návraty

Array<string | symbol>

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

Metoda utility pro vytváření čitelných datových proudů z iterátorů.

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

Parametry

iterable

Iterable<any> | AsyncIterable<any>

options

ReadableOptions

Návraty

Readable

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 <xref:defaultMaxListeners>.

function getMaxListeners()

Návraty

number

isDisturbed(Readable | ReadableStream)

Vrátí, zda byl datový proud načten nebo zrušen.

static function isDisturbed(stream: Readable | ReadableStream)

Parametry

stream

Readable | ReadableStream

Návraty

boolean

isPaused()

Metoda readable.isPaused() vrátí aktuální provozní stavReadable. Používá se primárně mechanismem, který je základemreadable.pipe() metody. Ve většině typických případů nebude možné tuto metodu použít přímo.

const readable = new stream.Readable();

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

Návraty

boolean

listenerCount(string | symbol)

Vrátí počet naslouchacích procesů naslouchajících události s názvem eventName.

function listenerCount(eventName: string | symbol)

Parametry

eventName

string | symbol

Název události, pro kterou se naslouchá

Návraty

number

listeners(string | symbol)

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(eventName: string | symbol)

Parametry

eventName

string | symbol

Návraty

Function[]

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

Alias pro emitter.removeListener().

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

Parametry

eventName

string | symbol

listener

(args: any[]) => void

Návraty

this

on("close", () => void)

function on(event: "close", listener: () => void)

Parametry

event

"close"

listener

() => void

Návraty

this

on("data", (chunk: any) => void)

function on(event: "data", listener: (chunk: any) => void)

Parametry

event

"data"

listener

(chunk: any) => void

Návraty

this

on("end", () => void)

function on(event: "end", listener: () => void)

Parametry

event

"end"

listener

() => void

Návraty

this

on("error", (err: Error) => void)

function on(event: "error", listener: (err: Error) => void)

Parametry

event

"error"

listener

(err: Error) => void

Návraty

this

on("pause", () => void)

function on(event: "pause", listener: () => void)

Parametry

event

"pause"

listener

() => void

Návraty

this

on("readable", () => void)

function on(event: "readable", listener: () => void)

Parametry

event

"readable"

listener

() => void

Návraty

this

on("resume", () => void)

function on(event: "resume", listener: () => void)

Parametry

event

"resume"

listener

() => void

Návraty

this

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

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

Parametry

event

string | symbol

listener

(args: any[]) => void

Návraty

this

once("close", () => void)

function once(event: "close", listener: () => void)

Parametry

event

"close"

listener

() => void

Návraty

this

once("data", (chunk: any) => void)

function once(event: "data", listener: (chunk: any) => void)

Parametry

event

"data"

listener

(chunk: any) => void

Návraty

this

once("end", () => void)

function once(event: "end", listener: () => void)

Parametry

event

"end"

listener

() => void

Návraty

this

once("error", (err: Error) => void)

function once(event: "error", listener: (err: Error) => void)

Parametry

event

"error"

listener

(err: Error) => void

Návraty

this

once("pause", () => void)

function once(event: "pause", listener: () => void)

Parametry

event

"pause"

listener

() => void

Návraty

this

once("readable", () => void)

function once(event: "readable", listener: () => void)

Parametry

event

"readable"

listener

() => void

Návraty

this

once("resume", () => void)

function once(event: "resume", listener: () => void)

Parametry

event

"resume"

listener

() => void

Návraty

this

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

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

Parametry

event

string | symbol

listener

(args: any[]) => void

Návraty

this

pause()

Metoda readable.pause() způsobí, že datový proud v režimu toku zastaví generování 'data' událostí a vypne tok režimu. Všechna data, která budou k dispozici, zůstanou v interní vyrovnávací paměti.

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ý vliv, pokud existuje naslouchací proces 'readable'událostí.

function pause()

Návraty

this

pipe<T>(T, undefined | Object)

function pipe<T>(destination: T, options?: undefined | Object)

Parametry

destination

T

options

undefined | Object

Návraty

T

prependListener("close", () => void)

function prependListener(event: "close", listener: () => void)

Parametry

event

"close"

listener

() => void

Návraty

this

prependListener("data", (chunk: any) => void)

function prependListener(event: "data", listener: (chunk: any) => void)

Parametry

event

"data"

listener

(chunk: any) => void

Návraty

this

prependListener("end", () => void)

function prependListener(event: "end", listener: () => void)

Parametry

event

"end"

listener

() => void

Návraty

this

prependListener("error", (err: Error) => void)

function prependListener(event: "error", listener: (err: Error) => void)

Parametry

event

"error"

listener

(err: Error) => void

Návraty

this

prependListener("pause", () => void)

function prependListener(event: "pause", listener: () => void)

Parametry

event

"pause"

listener

() => void

Návraty

this

prependListener("readable", () => void)

function prependListener(event: "readable", listener: () => void)

Parametry

event

"readable"

listener

() => void

Návraty

this

prependListener("resume", () => void)

function prependListener(event: "resume", listener: () => void)

Parametry

event

"resume"

listener

() => void

Návraty

this

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

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

Parametry

event

string | symbol

listener

(args: any[]) => void

Návraty

this

prependOnceListener("close", () => void)

function prependOnceListener(event: "close", listener: () => void)

Parametry

event

"close"

listener

() => void

Návraty

this

prependOnceListener("data", (chunk: any) => void)

function prependOnceListener(event: "data", listener: (chunk: any) => void)

Parametry

event

"data"

listener

(chunk: any) => void

Návraty

this

prependOnceListener("end", () => void)

function prependOnceListener(event: "end", listener: () => void)

Parametry

event

"end"

listener

() => void

Návraty

this

prependOnceListener("error", (err: Error) => void)

function prependOnceListener(event: "error", listener: (err: Error) => void)

Parametry

event

"error"

listener

(err: Error) => void

Návraty

this

prependOnceListener("pause", () => void)

function prependOnceListener(event: "pause", listener: () => void)

Parametry

event

"pause"

listener

() => void

Návraty

this

prependOnceListener("readable", () => void)

function prependOnceListener(event: "readable", listener: () => void)

Parametry

event

"readable"

listener

() => void

Návraty

this

prependOnceListener("resume", () => void)

function prependOnceListener(event: "resume", listener: () => void)

Parametry

event

"resume"

listener

() => void

Návraty

this

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

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

Parametry

event

string | symbol

listener

(args: any[]) => void

Návraty

this

push(any, BufferEncoding)

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

Parametry

chunk

any

encoding

BufferEncoding

Návraty

boolean

rawListeners(string | symbol)

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()).

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(eventName: string | symbol)

Parametry

eventName

string | symbol

Návraty

Function[]

read(undefined | number)

Metoda readable.read() stáhne některá data z interní vyrovnávací paměti a vrátí je. Pokud nejsou k dispozici žádná data ke čtení, null se vrátí. Ve výchozím nastavení se data vrátí jako objekt Buffer, pokud nebylo zadáno kódování pomocí metody readable.setEncoding() nebo stream pracuje v režimu objektu. Volitelný argument size určuje konkrétní počet bajtů, které se mají přečíst. Pokudsize bajty nejsou k dispozici ke čtení, null se vrátí _unless_the datový proud skončí, v takovém případě se vrátí všechna data zbývající v interní vyrovnávací paměti.

Pokud není zadaný argument size, vrátí se všechna data obsažená v interní vyrovnávací paměti.

Argument size musí být menší nebo roven 1 GiB.

Metoda readable.read() by měla být volána pouze u datových proudů Readable provozovaných v pozastaveném režimu. V režimu toku se readable.read() volá automaticky, dokud se vnitřní vyrovnávací paměť plně vyprázdní.

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í readable.read() vrátí blok dat nebo null. Bloky dat nejsou zřetězeny. Smyčka while je nezbytná ke spotřebování všech dat v současné době ve vyrovnávací paměti. Při čtení velkého souboru .read() se může vrátit null, spotřeboval veškerý obsah uložený v vyrovnávací paměti, ale stále existuje více dat, která ještě nejsou uložena do vyrovnávací paměti. V takovém případě se vygeneruje nová událost 'readable', když bude ve vyrovnávací paměti více dat. Nakonec se událost 'end' vygeneruje, když už nebudou k dispozici žádná další data.

Proto ke čtení celého obsahu souboru z readableje nutné shromažďovat bloky dat napříč několika událostmi 'readable':

const chunks = [];

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

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

Datový proud Readable v režimu objektu vždy vrátí jednu položku z volání readable.read(size)bez ohledu na hodnotu argumentusize.

Pokud readable.read() metoda vrátí blok dat, vygeneruje se také událost 'data'.

Volání <xref:read> po vygenerování události 'end' vrátí null. Nedojde k žádné chybě za běhu.

function read(size?: undefined | number)

Parametry

size

undefined | number

Volitelný argument určující, kolik dat se má číst.

Návraty

any

removeAllListeners(string | symbol)

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(event?: string | symbol)

Parametry

event

string | symbol

Návraty

this

removeListener("close", () => void)

function removeListener(event: "close", listener: () => void)

Parametry

event

"close"

listener

() => void

Návraty

this

removeListener("data", (chunk: any) => void)

function removeListener(event: "data", listener: (chunk: any) => void)

Parametry

event

"data"

listener

(chunk: any) => void

Návraty

this

removeListener("end", () => void)

function removeListener(event: "end", listener: () => void)

Parametry

event

"end"

listener

() => void

Návraty

this

removeListener("error", (err: Error) => void)

function removeListener(event: "error", listener: (err: Error) => void)

Parametry

event

"error"

listener

(err: Error) => void

Návraty

this

removeListener("pause", () => void)

function removeListener(event: "pause", listener: () => void)

Parametry

event

"pause"

listener

() => void

Návraty

this

removeListener("readable", () => void)

function removeListener(event: "readable", listener: () => void)

Parametry

event

"readable"

listener

() => void

Návraty

this

removeListener("resume", () => void)

function removeListener(event: "resume", listener: () => void)

Parametry

event

"resume"

listener

() => void

Návraty

this

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

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

Parametry

event

string | symbol

listener

(args: any[]) => void

Návraty

this

resume()

Metoda readable.resume() způsobí, že explicitně pozastavený datový proud Readable obnoví generování 'data' událostí a přepne stream do režimu toku. Metodu readable.resume() lze použít k úplnému využití dat z datového proudu bez skutečného zpracování jakýchkoli těchto dat:

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

Metoda readable.resume() nemá žádný vliv, pokud existuje naslouchací proces 'readable'událostí.

function resume()

Návraty

this

setEncoding(BufferEncoding)

Metoda readable.setEncoding() nastaví kódování znaků pro data načtená z datového proudu Readable. Ve výchozím nastavení není přiřazeno žádné kódování a stream data budou vrácena jakoBuffer objekty. Nastavení kódování způsobí, že se data datového proudu vrátí jako řetězce zadaného kódování, nikoli jako objekty Buffer. Volání readable.setEncoding('utf8') například způsobí, že se výstupní data interpretují jako data UTF-8 a předají se jako řetězce. Voláníreadable.setEncoding('hex') způsobí kódování dat v šestnáctkovém řetězcovém formátu.

Datový proud Readable správně zpracuje více bajtové znaky doručované prostřednictvím datového proudu, které by jinak byly nesprávně dekódovány, pokud by se jednoduše stáhly z datového proudu 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)

Parametry

encoding

BufferEncoding

Kódování, které se má použít.

Návraty

this

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 je možné nastavit naInfinity (nebo 0) a 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)

Parametry

n

number

Návraty

this

unpipe(NodeJS.WritableStream)

Metoda readable.unpipe() odpojte dříve připojený datový proud Writable pomocí metody <xref:pipe>. Pokud není zadaný destination, všechny kanály jsou odpojeny.

Pokud je zadaná destination, ale pro ni není nastaven žádný kanál, metoda nic nedělá.

const fs = require('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?: NodeJS.WritableStream)

Parametry

destination
NodeJS.WritableStream

Volitelný konkrétní datový proud pro zrušení výkonu

Návraty

this

unshift(any, BufferEncoding)

Předávání chunk jako null signalizuje konec datového proudu (EOF) a chová se stejně jako readable.push(null), po kterém nelze zapisovat žádná další data. Signál EOF se umístí na konec vyrovnávací paměti a všechna data ve vyrovnávací paměti budou stále vyprázdněna. Metoda readable.unshift() odešle blok dat zpět do interní vyrovnávací paměti. To je užitečné v určitých situacích, kdy se stream spotřebovává kódem, který potřebuje "zrušit využití" určitého množství dat, která optimisticky vytáhl ze zdroje, aby bylo možné data předat některé jiné straně.

Metodu stream.unshift(chunk) nelze volat po vygenerování události 'end' nebo dojde k chybě za běhu.

Vývojáři, kteří používají stream.unshift() často zvažují přechod na použití datového proudu Transform. Další informace najdete v části 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).
const { StringDecoder } = require('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.match(/\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);
      } else {
        // Still reading the header.
        header += str;
      }
    }
  }
}

Na rozdíl od <xref:push>stream.unshift(chunk) proces čtení neukončí resetováním interního stavu čtení datového proudu. To může způsobit neočekávané výsledky, pokud se při čtení volá readable.unshift() (tj. z implementace <xref:_read> ve vlastním datovém proudu). Po volání readable.unshift() s okamžitou <xref:push> odpovídajícím způsobem resetuje stav čtení, ale je nejlepší se vyhnout volání readable.unshift() při čtení.

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

Parametry

chunk

any

Blok dat, který se přesune do fronty čtení. U datových proudů, které nefungují v režimu objektu, musí být chunk řetězec, Buffer, Uint8Array nebo null. U datových proudů v režimu objektů může být chunk libovolnou hodnotou JavaScriptu.

encoding

BufferEncoding

Kódování blokůřetězcůch Musí být platné kódování Buffer, například 'utf8' nebo 'ascii'.

wrap(ReadableStream)

Před Node.js 0.10 neimplementovaly streamy celé rozhraní API modulu stream, protože je aktuálně definované. (Další informace najdete v Compatibility.) Při použití starší knihovny Node.js, která generuje události 'data' a má <xref:pause> metodu, která je pouze poradcem, lze metodureadable.wrap() použít k vytvoření Readable datového proudu, který jako zdroj dat používá starý datový proud.

Zřídka bude nutné použít readable.wrap(), ale metoda byla poskytována jako pohodlí pro interakci se staršími Node.js aplikacemi a knihovnami.

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

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

Parametry

stream

ReadableStream

Datový proud se starým stylem, který je čitelný

Návraty

this