Readable class

Extends

Stream

속성

closed

true 방출된 이후 'close' 의 신호입니다.

destroyed

true 그 이후 readable.destroy() 에야 호출되었습니다.

errored

스트림이 오류가 발생하면 오류를 반환합니다.

readable

trueread를 호출해도 안전한지, 즉 스트림이 파괴되거나 방출 'error' 되지 않았다는 의미입니다.'end'

readableAborted

스트림이 방출되기 전에 'end'파괴되었거나 오류가 발생했는지 반환합니다.

readableDidRead

방출되었는지 여부 'data' 에 대해 반환합니다.

readableEncoding

주어진 Readable 스트림의 속성 encoding 에 대한 게터입니다. 이 속성은 encodingsetEncoding 메서드를 사용하여 설정할 수 있습니다.

readableEnded

이벤트가 방출될 때 'end' 가 됩니다true.

readableFlowing

이 특성은 세 가지 상태 섹션에서 설명된 하천의 Readable 현재 상태를 반영합니다.

readableHighWaterMark

이 를 Readable생성할 때 전달된 값을 highWaterMark 반환합니다.

readableLength

이 속성은 읽을 준비가 된 큐 내 바이트(또는 객체)의 수를 포함합니다. 이 값 highWaterMark은 .

readableObjectMode

주어진 Readable 스트림의 속성 objectMode 에 대한 게터입니다.

메서드

addListener(string | symbol, (args: any[]) => void)
addListener<E>(E, (args: ReadableEventMap[E]) => void)
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)stream.compose(readable, s)와 같습니다.

이 방법은 또한 a 제공을 허용 AbortSignal 하며, 이 경우 중단 시 컴포지션 스트림을 파괴합니다.

자세한 내용은 stream.compose(...streams)을 참조하세요.

destroy(Error)

스트림을 삭제합니다. 선택적으로 이벤트를 방출 'error' 하고, 이벤트를 'close' 방출합니다(가 로 false설정되지 않는 한emitClose). 이 호출 후에는 읽기 가능한 스트림이 내부 자원을 해제하고 이후 호출 push() 은 무시됩니다.

한 번 호출되면 destroy() 추가 호출은 no-op이 되며, 에서 외 _destroy()'error'에는 오류 없이 로 표시됩니다.

구현자는 이 메서드를 덮어쓰지 말고 대신 를 구현 readable._destroy()해야 합니다.

drop(number, Abortable)

이 메서드는 처음부터 첫 번째 제한 청크가 삭제된 새로운 스트림을 반환합니다.

emit(string | symbol, any[])
emit<E>(E, ReadableEventMap[E])
every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

이 방법은 스트림 내 각 청크에서 fn을 호출하여 기다리는 반환값이 fn에 대해 진실한지 확인하는 것과 유사 Array.prototype.every 합니다. 청크 awaited 반환값에 대한 fn 호출이 falsy가 되면, 스트림은 파괴되고 약속은 로 이행false됩니다. 모든 fn 호출이 청크에 대해 진리값을 반환하면, 약속은 로 true성취됩니다.

filter((data: any, options?: Abortable) => boolean | Promise<boolean>, ReadableOperatorOptions)

이 방법은 스트림을 필터링할 수 있게 해줍니다. 스트림의 각 청크마다 fn 함수가 호출되고, 만약 truey 값을 반환하면 그 청크가 결과 스트림에 전달됩니다. fn 함수가 약속을 반환하면 그 약속은 ed가 됩니다await.

find((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)
find<T>((data: any, options?: Abortable) => data, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

이 방법은 스트림 내 각 청크에서 fn을 호출하여 fn에 대해 진리값이 있는 청크를 찾는 것과 유사 Array.prototype.find 합니다. fn 호출의 기다리는 반환값이 진실이 되면, 스트림은 파괴되고 약속은 fn이 진실 값을 반환한 값으로 이행됩니다. 모든 fn 호출이 청크에 대해 가짜 값을 반환하면, 약속은 로 성취 undefined됩니다.

flatMap((data: any, options?: Abortable) => any, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

이 방법은 각 청크에 주어진 콜백을 적용한 후 결과를 평탄화하여 새로운 스트림을 반환합니다.

fn에서 스트림이나 다른 반복 가능하거나 비동기 반복 가능한 스트림을 반환할 수 있으며, 결과 스트림은 반환된 스트림에 병합(평탄화)됩니다.

forEach((data: any, options?: Abortable) => void | Promise<void>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

이 방법은 스트림을 반복할 수 있게 해줍니다. 스트림의 각 청크마다 fn 함수가 호출됩니다. fn 함수가 약속을 반환하면 그 약속은 ed가 됩니다await.

이 방법은 선택적으로 청크를 동시에 처리할 수 있다는 점에서 루프와 for await...of 다릅니다. 또한, 반복은 forEach 옵션을 통과 signal 하고 관련된 AbortController를 중단해야 하며, for await...of 는 또는 return로 중단 break 할 수 있습니다. 어느 쪽이든 개울은 파괴될 것입니다.

이 방법은 이벤트 수신 'data' 과 달리 기본 메커니즘 내 이벤트를 사용 readable 하며 동시 fn 호출 수를 제한할 수 있습니다.

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

반복자에서 읽을 수 있는 스트림을 생성하는 유틸리티 방법.

fromWeb(ReadableStream<any>, Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">)

ReadableStream에서 생성 Readable 하는 유틸리티 메서드 .

isDisturbed(ReadableStream<any> | ReadableStream)

스트림이 읽혔는지 취소되었는지 반환합니다.

isPaused()

이 메서드는 readable.isPaused() .의 Readable현재 작동 상태를 반환합니다. 이는 주로 방법의 readable.pipe() 기초가 되는 메커니즘에서 사용됩니다. 대부분의 경우, 이 방법을 직접 사용할 이유가 없습니다.

const readable = new stream.Readable();

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

이 방법으로 생성된 반복자는 루프가 for await...ofreturn, break, 또는 throw반복 중 오류가 발생하면 스트림 파괴를 취소하거나, 반복 중 스트림이 오류를 발생시킨다면 스트림을 파괴할 수 있는 옵션을 제공합니다.

listenerCount(string | symbol, (args: any[]) => void)
listenerCount<E>(E, (args: ReadableEventMap[E]) => void)
listeners(string | symbol)
listeners<E>(E)
map((data: any, options?: Abortable) => any, ReadableOperatorOptions)

이 방법은 스트림 전체에 매핑할 수 있게 해줍니다. 스트림의 모든 청크마다 fn 함수가 호출됩니다. fn 함수가 약속을 반환하면, 그 약속은 결과 스트림에 전달되기 전에 ed 처리됩니다await.

off(string | symbol, (args: any[]) => void)
off<E>(E, (args: ReadableEventMap[E]) => void)
on(string | symbol, (args: any[]) => void)
on<E>(E, (args: ReadableEventMap[E]) => void)
once(string | symbol, (args: any[]) => void)
once<E>(E, (args: ReadableEventMap[E]) => void)
pause()

readable.pause() 방법은 흐름 모드에 있는 스트림이 이벤트를 방출하지 않 'data' 게 하여 흐름 모드에서 벗어나게 만듭니다. 이용 가능한 모든 데이터는 내부 버퍼에 남아 있습니다.

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);
});

readable.pause() 이벤트 리스너가 'readable' 있으면 이 메서드는 효과가 없습니다.

prependListener(string | symbol, (args: any[]) => void)
prependListener<E>(E, (args: ReadableEventMap[E]) => void)
prependOnceListener(string | symbol, (args: any[]) => void)
prependOnceListener<E>(E, (args: ReadableEventMap[E]) => void)
push(any, BufferEncoding)
rawListeners(string | symbol)
rawListeners<E>(E)
read(number)

이 메서드는 readable.read() 내부 버퍼에서 데이터를 읽어내어 반환합니다. 읽을 수 있는 데이터가 없으면 반환 null 됩니다. 기본적으로 인코딩 readable.setEncoding() 이 지정되어 있거나 스트림이 객체 모드로 동작하지 않는 한 데이터는 객체로 Buffer 반환됩니다.

선택적 size 인자는 읽을 특정 바이트 수를 지정합니다. 읽을 수 없는 바이트는 스트림이 종료되지 않는 한 반환되며, 이 경우 내부 버퍼에 남아 있는 모든 데이터가 반환됩니다. nullsize

인자가 지정되지 않으면 size 내부 버퍼에 포함된 모든 데이터가 반환됩니다.

size 인수는 1 GiB 이하여야 합니다.

이 메서드는 readable.read() 일시정지 모드로 동작하는 스트림에서만 Readable 호출되어야 합니다. 플로잉 모드 readable.read() 에서는 내부 버퍼가 완전히 배수될 때까지 자동으로 호출됩니다.

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.');
});

각 호출 readable.read() 은 데이터 덩어리, 즉 null를 반환합니다. 청크들은 연결되어 있지 않습니다. 현재 버퍼에 있는 모든 데이터를 소비하려면 루프가 while 필요합니다. 큰 파일을 .read() 읽으면 지금까지 버퍼된 모든 내용을 소모한 후 로 반환 null될 수 있지만, 아직 버퍼링되지 않은 데이터가 더 남아 있습니다. 이 경우 버퍼에 더 많은 데이터가 있을 때 새로운 'readable' 이벤트가 발생한다. 마지막으로 'end' 더 이상 데이터가 없을 때 이벤트가 방출됩니다.

따라서 파일의 전체 내용을 readable읽으려면 여러 'readable' 이벤트에 걸쳐 청크를 수집해야 합니다:

const chunks = [];

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

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

객체 모드의 스트림은 Readable 인수의 값 size 과 상관없이 에 대한 readable.read(size)호출에서 항상 단일 항목을 반환합니다.

메서드가 readable.read() 데이터 'data' 덩어리를 반환하면 이벤트도 함께 발생하게 됩니다.

이벤트가 'end' 발신한 후 읽음을 호출하면 다시 돌아null옵니다. 런타임 오류는 발생하지 않습니다.

reduce<T>((previous: any, data: any, options?: Abortable) => T)

이 메서드는 스트림의 각 청크에 대해 fn 을 순서대로 호출하여 이전 요소에 대한 계산 결과를 전달합니다. 이 방법은 축소의 최종 값에 대한 약속을 반환합니다.

초기 값이 제공되지 않으면 스트림의 첫 번째 청크가 초기 값으로 사용됩니다. 스트림이 비어 있으면, 코드의 속성을 가진 ERR_INVALID_ARGS a로 TypeError 약속을 거부합니다.

리듀서 함수는 스트림을 요소별로 반복하여 동 성 매개변수나 병렬성이 없습니다. 동시 감소를 수행하려면 메서드에 readable.map 비동기 함수를 추출할 수 있습니다.

reduce<T>((previous: T, data: any, options?: Abortable) => T, T, Abortable)
removeAllListeners(string | symbol)
removeAllListeners<E>(E)
removeListener(string | symbol, (args: any[]) => void)
removeListener<E>(E, (args: ReadableEventMap[E]) => void)
resume()

readable.resume() 방법은 명시적으로 일시정지된 Readable 스트림이 이벤트를 다시 방출 'data' 하게 하여 스트림을 흐름 모드로 전환하게 합니다.

readable.resume() 방법은 실제로 데이터를 처리하지 않고도 스트림의 데이터를 완전히 소비할 수 있습니다:

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

readable.resume() 이벤트 리스너가 'readable' 있으면 이 메서드는 효과가 없습니다.

setEncoding(BufferEncoding)

이 메서드는 readable.setEncoding() 스트림에서 Readable 읽는 데이터의 문자 인코딩을 설정합니다.

기본적으로 인코딩은 할당되지 않으며 스트림 데이터는 객체로 Buffer 반환됩니다. 인코딩을 설정하면 스트림 데이터가 객체가 아닌 Buffer 지정된 인코딩의 문자열로 반환됩니다. 예를 들어, 호출 readable.setEncoding('utf8') 하면 출력 데이터가 UTF-8 데이터로 해석되어 문자열로 전달됩니다. 호출하면 readable.setEncoding('hex') 데이터가 16진수 문자열 형식으로 인코딩됩니다.

스트림은 Readable 단순히 객체로 Buffer 추출하면 부적절하게 디코딩될 수 있는 다중 바이트 문자를 올바르게 처리합니다.

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);
});
some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

이 방법은 스트림 내 각 청크에서 fn을 호출하여 기다리는 반환값(또는 진리 값)이 될 true 때까지 호출하는 것과 유사 Array.prototype.some 합니다. 청크 awaited 반환값에 대한 fn 호출이 진리가 되면, 스트림은 파괴되고 약속은 로 이루어집니다.true 만약 청크에 대한 fn 호출이 진리값(truthy value)을 반환하지 않으면, 약속은 로 충족 false됩니다.

take(number, Abortable)

이 방법은 첫 번째 제한 청크를 가진 새로운 스트림을 반환합니다.

toArray(Abortable)

이 방법은 스트림의 내용을 쉽게 얻을 수 있게 해줍니다.

이 방법은 전체 스트림을 메모리에 읽기 때문에 스트림의 이점을 상쇄합니다. 상호운용성과 편의성을 위해 설계된 것이지, 스트림을 소비하는 주된 방법이 아닙니다.

toWeb(ReadableStream, ReadableToWebOptions)

. 에서 웹 ReadableStreamReadable을 생성하는 유틸리티 방법

unpipe(WritableStream)

readable.unpipe() 이 방법은 파이프 방식으로 이전에 부착된 물줄기를 분리하는 Writable 방식입니다.

만약 이 destination 명시되지 않으면 모든 파이프가 분리됩니다.

만약 가 destination 지정되었지만 파이프가 설정되어 있지 않으면, 메서드는 아무런 동작을 하지 않습니다.

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);
unshift(any, BufferEncoding)

null 패스하면 chunk 스트림의 끝(EOF)을 알리고, 와 동일readable.push(null)하게 동작하며, 그 이후에는 더 이상 데이터를 쓸 수 없습니다. EOF 신호는 버퍼 끝에 배치되며, 버퍼된 데이터는 여전히 플러싱됩니다.

readable.unshift() 방법은 데이터 덩어리를 내부 버퍼로 다시 밀어냅니다. 이는 스트림이 소스에서 낙관적으로 가져온 데이터를 "소모 해제"해야 하는 특정 상황에서 유용합니다.

stream.unshift(chunk) 이벤트가 'end' 발생한 후에는 메서드를 호출할 수 없으며, 그렇지 않으면 런타임 오류가 발생합니다.

자주 사용하는 stream.unshift() 개발자들은 스트림 사용 Transform 으로 전환하는 것을 고려해야 합니다. 자세한 내용은 섹션을 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;
    }
  }
}

푸시와 달리, 스트림 stream.unshift(chunk) 의 내부 읽기 상태를 초기화하여 읽기 과정을 종료하지 않습니다. 이는 읽기 중(즉, _read 구현 내 사용자 지정 스트림에서) 호출될 경우 readable.unshift() 예상치 못한 결과를 초래할 수 있습니다. 호출 readable.unshift() 후 즉시 푸시 를 하면 읽기 상태가 적절히 초기화되지만, 읽기 수행 중에는 호출을 피 readable.unshift() 하는 것이 가장 좋습니다.

wrap(ReadableStream)

Node.js 0.10 이전에는 스트림즈가 현재 정의된 전체 node:stream 모듈 API를 구현하지 않았습니다. (자세한 내용은 참고하세요 Compatibility .)

이벤트를 'data' 방출하고 일 시정지 메서드가 자문 전용 메서드인 오래된 Node.js 라이브러리를 사용할 때, 이 readable.wrap() 메서드를 사용해 기존 스트림을 데이터 소스로 사용하는 스트림을 Readable 생성할 수 있습니다.

이 방법은 거의 사용할 필요가 readable.wrap() 없지만, 오래된 Node.js 애플리케이션 및 라이브러리와의 상호작용을 편리하게 하기 위해 제공되었습니다.

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.
});
[asyncIterator]()

상속된 메서드

eventNames()

이미터가 수신기를 등록한 이벤트를 나열하는 배열을 반환합니다.

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) ]
getMaxListeners()

EventEmitter 설정되거나 emitter.setMaxListeners(n)기본값인 events.defaultMaxListeners 대한 현재 최대 수신기 값을 반환합니다.

pipe<T>(T, PipeOptions)
setMaxListeners(number)

기본적으로 EventEmitter특정 이벤트에 대해 10 개 이상의 수신기가 추가되면 경고를 출력합니다. 이는 메모리 누수 찾기에 도움이 되는 유용한 기본값입니다. emitter.setMaxListeners() 메서드를 사용하면 이 특정 EventEmitter 인스턴스에 대한 제한을 수정할 수 있습니다. 값을 Infinity(또는 0)로 설정하여 무제한 수신기를 나타낼 수 있습니다.

호출을 연결할 수 있도록 EventEmitter대한 참조를 반환합니다.

[captureRejectionSymbol](Error, string | symbol, any[])

Symbol.for('nodejs.rejection') 이 메서드는 이벤트를 방출할 때 약속 거부가 발생할 때 호출되며, captureRejections 이미터에서 활성화됩니다. 를 대신events.captureRejectionSymbol해 사용할 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.
  }
}

생성자 세부 정보

Readable(ReadableOptions<Readable>)

new Readable(options?: ReadableOptions<Readable>)

매개 변수

options

ReadableOptions<Readable>

속성 세부 정보

closed

true 방출된 이후 'close' 의 신호입니다.

closed: boolean

속성 값

boolean

destroyed

true 그 이후 readable.destroy() 에야 호출되었습니다.

destroyed: boolean

속성 값

boolean

errored

스트림이 오류가 발생하면 오류를 반환합니다.

errored: null | Error

속성 값

null | Error

readable

trueread를 호출해도 안전한지, 즉 스트림이 파괴되거나 방출 'error' 되지 않았다는 의미입니다.'end'

readable: boolean

속성 값

boolean

readableAborted

스트림이 방출되기 전에 'end'파괴되었거나 오류가 발생했는지 반환합니다.

readableAborted: boolean

속성 값

boolean

readableDidRead

방출되었는지 여부 'data' 에 대해 반환합니다.

readableDidRead: boolean

속성 값

boolean

readableEncoding

주어진 Readable 스트림의 속성 encoding 에 대한 게터입니다. 이 속성은 encodingsetEncoding 메서드를 사용하여 설정할 수 있습니다.

readableEncoding: null | BufferEncoding

속성 값

null | BufferEncoding

readableEnded

이벤트가 방출될 때 'end' 가 됩니다true.

readableEnded: boolean

속성 값

boolean

readableFlowing

이 특성은 세 가지 상태 섹션에서 설명된 하천의 Readable 현재 상태를 반영합니다.

readableFlowing: null | boolean

속성 값

null | boolean

readableHighWaterMark

이 를 Readable생성할 때 전달된 값을 highWaterMark 반환합니다.

readableHighWaterMark: number

속성 값

number

readableLength

이 속성은 읽을 준비가 된 큐 내 바이트(또는 객체)의 수를 포함합니다. 이 값 highWaterMark은 .

readableLength: number

속성 값

number

readableObjectMode

주어진 Readable 스트림의 속성 objectMode 에 대한 게터입니다.

readableObjectMode: boolean

속성 값

boolean

메서드 세부 정보

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

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

매개 변수

eventName

string | symbol

listener

(args: any[]) => void

반품

addListener<E>(E, (args: ReadableEventMap[E]) => void)

function addListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

매개 변수

eventName

E

listener

(args: ReadableEventMap[E]) => void

반품

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)stream.compose(readable, s)와 같습니다.

이 방법은 또한 a 제공을 허용 AbortSignal 하며, 이 경우 중단 시 컴포지션 스트림을 파괴합니다.

자세한 내용은 stream.compose(...streams)을 참조하세요.

function compose(stream: WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void, options?: Abortable): Duplex

매개 변수

stream

WritableStream | WritableStream<any> | TransformStream<any, any> | (source: any) => void

options

Abortable

반품

Duplex

스트림 와 함께 구성된 stream스트림 .

destroy(Error)

스트림을 삭제합니다. 선택적으로 이벤트를 방출 'error' 하고, 이벤트를 'close' 방출합니다(가 로 false설정되지 않는 한emitClose). 이 호출 후에는 읽기 가능한 스트림이 내부 자원을 해제하고 이후 호출 push() 은 무시됩니다.

한 번 호출되면 destroy() 추가 호출은 no-op이 되며, 에서 외 _destroy()'error'에는 오류 없이 로 표시됩니다.

구현자는 이 메서드를 덮어쓰지 말고 대신 를 구현 readable._destroy()해야 합니다.

function destroy(error?: Error): Readable

매개 변수

error

Error

이 오류는 이벤트 시 'error' 페이로드로 전달됩니다

반품

drop(number, Abortable)

이 메서드는 처음부터 첫 번째 제한 청크가 삭제된 새로운 스트림을 반환합니다.

function drop(limit: number, options?: Abortable): Readable

매개 변수

limit

number

읽을 수 있는 값에서 삭제할 수 있는 청크 수.

options

Abortable

반품

처음부터 제한 청크가 떨어지는 스트림.

emit(string | symbol, any[])

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

매개 변수

eventName

string | symbol

args

any[]

반품

boolean

emit<E>(E, ReadableEventMap[E])

function emit<E>(eventName: E, args: ReadableEventMap[E]): boolean

매개 변수

eventName

E

args

ReadableEventMap[E]

반품

boolean

every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

이 방법은 스트림 내 각 청크에서 fn을 호출하여 기다리는 반환값이 fn에 대해 진실한지 확인하는 것과 유사 Array.prototype.every 합니다. 청크 awaited 반환값에 대한 fn 호출이 falsy가 되면, 스트림은 파괴되고 약속은 로 이행false됩니다. 모든 fn 호출이 청크에 대해 진리값을 반환하면, 약속은 로 true성취됩니다.

function every(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<boolean>

매개 변수

fn

(data: any, options?: Abortable) => boolean | Promise<boolean>

스트림의 각 청크를 호출하는 함수입니다. 비동기 동기 여부 여부.

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

반품

Promise<boolean>

fn이 true 모든 청크에 대해 진 리 값을 반환하는지 평가하는 약속입니다.

filter((data: any, options?: Abortable) => boolean | Promise<boolean>, ReadableOperatorOptions)

이 방법은 스트림을 필터링할 수 있게 해줍니다. 스트림의 각 청크마다 fn 함수가 호출되고, 만약 truey 값을 반환하면 그 청크가 결과 스트림에 전달됩니다. fn 함수가 약속을 반환하면 그 약속은 ed가 됩니다await.

function filter(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: ReadableOperatorOptions): Readable

매개 변수

fn

(data: any, options?: Abortable) => boolean | Promise<boolean>

스트림에서 청크를 필터링하는 함수입니다. 비동기 동기 여부 여부.

options

ReadableOperatorOptions

반품

술어 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>

매개 변수

fn

(data: any, options?: Abortable) => boolean | Promise<boolean>

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

반품

Promise<any>

find<T>((data: any, options?: Abortable) => data, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

이 방법은 스트림 내 각 청크에서 fn을 호출하여 fn에 대해 진리값이 있는 청크를 찾는 것과 유사 Array.prototype.find 합니다. fn 호출의 기다리는 반환값이 진실이 되면, 스트림은 파괴되고 약속은 fn이 진실 값을 반환한 값으로 이행됩니다. 모든 fn 호출이 청크에 대해 가짜 값을 반환하면, 약속은 로 성취 undefined됩니다.

function find<T>(fn: (data: any, options?: Abortable) => data, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<undefined | T>

매개 변수

fn

(data: any, options?: Abortable) => data

스트림의 각 청크를 호출하는 함수입니다. 비동기 동기 여부 여부.

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

반품

Promise<undefined | T>

fn이 진리값 undefined 으로 평가한 첫 번째 청크에 대한 약속 또는 원소가 발견되지 않았을 때를 평가합니다.

flatMap((data: any, options?: Abortable) => any, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

이 방법은 각 청크에 주어진 콜백을 적용한 후 결과를 평탄화하여 새로운 스트림을 반환합니다.

fn에서 스트림이나 다른 반복 가능하거나 비동기 반복 가능한 스트림을 반환할 수 있으며, 결과 스트림은 반환된 스트림에 병합(평탄화)됩니다.

function flatMap(fn: (data: any, options?: Abortable) => any, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Readable

매개 변수

fn

(data: any, options?: Abortable) => any

스트림의 모든 청크를 매핑하는 함수입니다. 비동기 문제일 수도 있습니다. 개울이나 발전기일 수도 있습니다.

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

반품

함수 fn으로 평평하게 매핑된 스트림입니다.

forEach((data: any, options?: Abortable) => void | Promise<void>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

이 방법은 스트림을 반복할 수 있게 해줍니다. 스트림의 각 청크마다 fn 함수가 호출됩니다. fn 함수가 약속을 반환하면 그 약속은 ed가 됩니다await.

이 방법은 선택적으로 청크를 동시에 처리할 수 있다는 점에서 루프와 for await...of 다릅니다. 또한, 반복은 forEach 옵션을 통과 signal 하고 관련된 AbortController를 중단해야 하며, for await...of 는 또는 return로 중단 break 할 수 있습니다. 어느 쪽이든 개울은 파괴될 것입니다.

이 방법은 이벤트 수신 'data' 과 달리 기본 메커니즘 내 이벤트를 사용 readable 하며 동시 fn 호출 수를 제한할 수 있습니다.

function forEach(fn: (data: any, options?: Abortable) => void | Promise<void>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<void>

매개 변수

fn

(data: any, options?: Abortable) => void | Promise<void>

스트림의 각 청크를 호출하는 함수입니다. 비동기 동기 여부 여부.

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

반품

Promise<void>

스트림이 끝나면 하는 약속이었다.

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

반복자에서 읽을 수 있는 스트림을 생성하는 유틸리티 방법.

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

매개 변수

iterable

Iterable<any> | AsyncIterable<any>

객체가 반복 가능한 프로토콜을 Symbol.asyncIteratorSymbol.iterator 구현하는 경우입니다. null 값이 전달되면 '오류' 이벤트를 생성합니다.

options

ReadableOptions<Readable>

옵션들은 제공됩니다.new stream.Readable([options]) 기본적으로 Readable.from() 는 로 설정되며, 이 부분은 명시적으로 로 설정하여 options.objectMode 옵트아웃하지 않는 한 로 설정 options.objectModetrue됩니다.false

반품

fromWeb(ReadableStream<any>, Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">)

ReadableStream에서 생성 Readable 하는 유틸리티 메서드 .

static function fromWeb(readableStream: ReadableStream<any>, options?: Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">): Readable

매개 변수

readableStream

ReadableStream<any>

options

Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">

반품

isDisturbed(ReadableStream<any> | ReadableStream)

스트림이 읽혔는지 취소되었는지 반환합니다.

static function isDisturbed(stream: ReadableStream<any> | ReadableStream): boolean

매개 변수

stream

ReadableStream<any> | ReadableStream

반품

boolean

isPaused()

이 메서드는 readable.isPaused() .의 Readable현재 작동 상태를 반환합니다. 이는 주로 방법의 readable.pipe() 기초가 되는 메커니즘에서 사용됩니다. 대부분의 경우, 이 방법을 직접 사용할 이유가 없습니다.

const readable = new stream.Readable();

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

반품

boolean

iterator(ReadableIteratorOptions)

이 방법으로 생성된 반복자는 루프가 for await...ofreturn, break, 또는 throw반복 중 오류가 발생하면 스트림 파괴를 취소하거나, 반복 중 스트림이 오류를 발생시킨다면 스트림을 파괴할 수 있는 옵션을 제공합니다.

function iterator(options?: ReadableIteratorOptions): AsyncIterator<any, undefined, any>

매개 변수

options

ReadableIteratorOptions

반품

AsyncIterator<any, undefined, any>

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

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

매개 변수

eventName

string | symbol

listener

(args: any[]) => void

반품

number

listenerCount<E>(E, (args: ReadableEventMap[E]) => void)

function listenerCount<E>(eventName: E, listener?: (args: ReadableEventMap[E]) => void): number

매개 변수

eventName

E

listener

(args: ReadableEventMap[E]) => void

반품

number

listeners(string | symbol)

function listeners(eventName: string | symbol): (args: any[]) => void[]

매개 변수

eventName

string | symbol

반품

(args: any[]) => void[]

listeners<E>(E)

function listeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]

매개 변수

eventName

E

반품

(args: ReadableEventMap[E]) => void[]

map((data: any, options?: Abortable) => any, ReadableOperatorOptions)

이 방법은 스트림 전체에 매핑할 수 있게 해줍니다. 스트림의 모든 청크마다 fn 함수가 호출됩니다. fn 함수가 약속을 반환하면, 그 약속은 결과 스트림에 전달되기 전에 ed 처리됩니다await.

function map(fn: (data: any, options?: Abortable) => any, options?: ReadableOperatorOptions): Readable

매개 변수

fn

(data: any, options?: Abortable) => any

스트림의 모든 청크를 매핑하는 함수입니다. 비동기 동기 여부 여부.

options

ReadableOperatorOptions

반품

함수 fn으로 매핑된 스트림입니다.

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

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

매개 변수

eventName

string | symbol

listener

(args: any[]) => void

반품

off<E>(E, (args: ReadableEventMap[E]) => void)

function off<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

매개 변수

eventName

E

listener

(args: ReadableEventMap[E]) => void

반품

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

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

매개 변수

eventName

string | symbol

listener

(args: any[]) => void

반품

on<E>(E, (args: ReadableEventMap[E]) => void)

function on<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

매개 변수

eventName

E

listener

(args: ReadableEventMap[E]) => void

반품

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

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

매개 변수

eventName

string | symbol

listener

(args: any[]) => void

반품

once<E>(E, (args: ReadableEventMap[E]) => void)

function once<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

매개 변수

eventName

E

listener

(args: ReadableEventMap[E]) => void

반품

pause()

readable.pause() 방법은 흐름 모드에 있는 스트림이 이벤트를 방출하지 않 'data' 게 하여 흐름 모드에서 벗어나게 만듭니다. 이용 가능한 모든 데이터는 내부 버퍼에 남아 있습니다.

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);
});

readable.pause() 이벤트 리스너가 'readable' 있으면 이 메서드는 효과가 없습니다.

function pause(): Readable

반품

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

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

매개 변수

eventName

string | symbol

listener

(args: any[]) => void

반품

prependListener<E>(E, (args: ReadableEventMap[E]) => void)

function prependListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

매개 변수

eventName

E

listener

(args: ReadableEventMap[E]) => void

반품

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

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

매개 변수

eventName

string | symbol

listener

(args: any[]) => void

반품

prependOnceListener<E>(E, (args: ReadableEventMap[E]) => void)

function prependOnceListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

매개 변수

eventName

E

listener

(args: ReadableEventMap[E]) => void

반품

push(any, BufferEncoding)

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

매개 변수

chunk

any

encoding

BufferEncoding

반품

boolean

rawListeners(string | symbol)

function rawListeners(eventName: string | symbol): (args: any[]) => void[]

매개 변수

eventName

string | symbol

반품

(args: any[]) => void[]

rawListeners<E>(E)

function rawListeners<E>(eventName: E): (args: ReadableEventMap[E]) => void[]

매개 변수

eventName

E

반품

(args: ReadableEventMap[E]) => void[]

read(number)

이 메서드는 readable.read() 내부 버퍼에서 데이터를 읽어내어 반환합니다. 읽을 수 있는 데이터가 없으면 반환 null 됩니다. 기본적으로 인코딩 readable.setEncoding() 이 지정되어 있거나 스트림이 객체 모드로 동작하지 않는 한 데이터는 객체로 Buffer 반환됩니다.

선택적 size 인자는 읽을 특정 바이트 수를 지정합니다. 읽을 수 없는 바이트는 스트림이 종료되지 않는 한 반환되며, 이 경우 내부 버퍼에 남아 있는 모든 데이터가 반환됩니다. nullsize

인자가 지정되지 않으면 size 내부 버퍼에 포함된 모든 데이터가 반환됩니다.

size 인수는 1 GiB 이하여야 합니다.

이 메서드는 readable.read() 일시정지 모드로 동작하는 스트림에서만 Readable 호출되어야 합니다. 플로잉 모드 readable.read() 에서는 내부 버퍼가 완전히 배수될 때까지 자동으로 호출됩니다.

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.');
});

각 호출 readable.read() 은 데이터 덩어리, 즉 null를 반환합니다. 청크들은 연결되어 있지 않습니다. 현재 버퍼에 있는 모든 데이터를 소비하려면 루프가 while 필요합니다. 큰 파일을 .read() 읽으면 지금까지 버퍼된 모든 내용을 소모한 후 로 반환 null될 수 있지만, 아직 버퍼링되지 않은 데이터가 더 남아 있습니다. 이 경우 버퍼에 더 많은 데이터가 있을 때 새로운 'readable' 이벤트가 발생한다. 마지막으로 'end' 더 이상 데이터가 없을 때 이벤트가 방출됩니다.

따라서 파일의 전체 내용을 readable읽으려면 여러 'readable' 이벤트에 걸쳐 청크를 수집해야 합니다:

const chunks = [];

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

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

객체 모드의 스트림은 Readable 인수의 값 size 과 상관없이 에 대한 readable.read(size)호출에서 항상 단일 항목을 반환합니다.

메서드가 readable.read() 데이터 'data' 덩어리를 반환하면 이벤트도 함께 발생하게 됩니다.

이벤트가 'end' 발신한 후 읽음을 호출하면 다시 돌아null옵니다. 런타임 오류는 발생하지 않습니다.

function read(size?: number): any

매개 변수

size

number

읽어야 할 데이터 양을 지정하는 선택적 인수.

반품

any

reduce<T>((previous: any, data: any, options?: Abortable) => T)

이 메서드는 스트림의 각 청크에 대해 fn 을 순서대로 호출하여 이전 요소에 대한 계산 결과를 전달합니다. 이 방법은 축소의 최종 값에 대한 약속을 반환합니다.

초기 값이 제공되지 않으면 스트림의 첫 번째 청크가 초기 값으로 사용됩니다. 스트림이 비어 있으면, 코드의 속성을 가진 ERR_INVALID_ARGS a로 TypeError 약속을 거부합니다.

리듀서 함수는 스트림을 요소별로 반복하여 동 성 매개변수나 병렬성이 없습니다. 동시 감소를 수행하려면 메서드에 readable.map 비동기 함수를 추출할 수 있습니다.

function reduce<T>(fn: (previous: any, data: any, options?: Abortable) => T): Promise<T>

매개 변수

fn

(previous: any, data: any, options?: Abortable) => T

스트림의 모든 청크를 호출하는 리듀서 함수입니다. 비동기 동기 여부 여부.

반품

Promise<T>

감축의 최종 가치에 대한 약속입니다.

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>

매개 변수

fn

(previous: T, data: any, options?: Abortable) => T

initial

T

options

Abortable

반품

Promise<T>

removeAllListeners(string | symbol)

function removeAllListeners(eventName?: string | symbol): Readable

매개 변수

eventName

string | symbol

반품

removeAllListeners<E>(E)

function removeAllListeners<E>(eventName?: E): Readable

매개 변수

eventName

E

반품

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

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

매개 변수

eventName

string | symbol

listener

(args: any[]) => void

반품

removeListener<E>(E, (args: ReadableEventMap[E]) => void)

function removeListener<E>(eventName: E, listener: (args: ReadableEventMap[E]) => void): Readable

매개 변수

eventName

E

listener

(args: ReadableEventMap[E]) => void

반품

resume()

readable.resume() 방법은 명시적으로 일시정지된 Readable 스트림이 이벤트를 다시 방출 'data' 하게 하여 스트림을 흐름 모드로 전환하게 합니다.

readable.resume() 방법은 실제로 데이터를 처리하지 않고도 스트림의 데이터를 완전히 소비할 수 있습니다:

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

readable.resume() 이벤트 리스너가 'readable' 있으면 이 메서드는 효과가 없습니다.

function resume(): Readable

반품

setEncoding(BufferEncoding)

이 메서드는 readable.setEncoding() 스트림에서 Readable 읽는 데이터의 문자 인코딩을 설정합니다.

기본적으로 인코딩은 할당되지 않으며 스트림 데이터는 객체로 Buffer 반환됩니다. 인코딩을 설정하면 스트림 데이터가 객체가 아닌 Buffer 지정된 인코딩의 문자열로 반환됩니다. 예를 들어, 호출 readable.setEncoding('utf8') 하면 출력 데이터가 UTF-8 데이터로 해석되어 문자열로 전달됩니다. 호출하면 readable.setEncoding('hex') 데이터가 16진수 문자열 형식으로 인코딩됩니다.

스트림은 Readable 단순히 객체로 Buffer 추출하면 부적절하게 디코딩될 수 있는 다중 바이트 문자를 올바르게 처리합니다.

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

매개 변수

encoding

BufferEncoding

사용할 인코딩입니다.

반품

some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<ReadableOperatorOptions, "signal" | "concurrency">)

이 방법은 스트림 내 각 청크에서 fn을 호출하여 기다리는 반환값(또는 진리 값)이 될 true 때까지 호출하는 것과 유사 Array.prototype.some 합니다. 청크 awaited 반환값에 대한 fn 호출이 진리가 되면, 스트림은 파괴되고 약속은 로 이루어집니다.true 만약 청크에 대한 fn 호출이 진리값(truthy value)을 반환하지 않으면, 약속은 로 충족 false됩니다.

function some(fn: (data: any, options?: Abortable) => boolean | Promise<boolean>, options?: Pick<ReadableOperatorOptions, "signal" | "concurrency">): Promise<boolean>

매개 변수

fn

(data: any, options?: Abortable) => boolean | Promise<boolean>

스트림의 각 청크를 호출하는 함수입니다. 비동기 동기 여부 여부.

options

Pick<ReadableOperatorOptions, "signal" | "concurrency">

반품

Promise<boolean>

fn이 적어도 한 청크에 대해 진실값을 반환하는지 평가하는 true 약속입니다.

take(number, Abortable)

이 방법은 첫 번째 제한 청크를 가진 새로운 스트림을 반환합니다.

function take(limit: number, options?: Abortable): Readable

매개 변수

limit

number

읽을 수 있는 것에서 추출할 청크 수.

options

Abortable

반품

제한 청크가 포함된 스트림.

toArray(Abortable)

이 방법은 스트림의 내용을 쉽게 얻을 수 있게 해줍니다.

이 방법은 전체 스트림을 메모리에 읽기 때문에 스트림의 이점을 상쇄합니다. 상호운용성과 편의성을 위해 설계된 것이지, 스트림을 소비하는 주된 방법이 아닙니다.

function toArray(options?: Abortable): Promise<any[]>

매개 변수

options

Abortable

반품

Promise<any[]>

스트림의 내용을 포함하는 배열을 포함하는 약속입니다.

toWeb(ReadableStream, ReadableToWebOptions)

. 에서 웹 ReadableStreamReadable을 생성하는 유틸리티 방법

static function toWeb(streamReadable: ReadableStream, options?: ReadableToWebOptions): ReadableStream<any>

매개 변수

streamReadable

ReadableStream

options

ReadableToWebOptions

반품

ReadableStream<any>

unpipe(WritableStream)

readable.unpipe() 이 방법은 파이프 방식으로 이전에 부착된 물줄기를 분리하는 Writable 방식입니다.

만약 이 destination 명시되지 않으면 모든 파이프가 분리됩니다.

만약 가 destination 지정되었지만 파이프가 설정되어 있지 않으면, 메서드는 아무런 동작을 하지 않습니다.

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

매개 변수

destination

WritableStream

언파이프할 특정 스트림 선택

반품

unshift(any, BufferEncoding)

null 패스하면 chunk 스트림의 끝(EOF)을 알리고, 와 동일readable.push(null)하게 동작하며, 그 이후에는 더 이상 데이터를 쓸 수 없습니다. EOF 신호는 버퍼 끝에 배치되며, 버퍼된 데이터는 여전히 플러싱됩니다.

readable.unshift() 방법은 데이터 덩어리를 내부 버퍼로 다시 밀어냅니다. 이는 스트림이 소스에서 낙관적으로 가져온 데이터를 "소모 해제"해야 하는 특정 상황에서 유용합니다.

stream.unshift(chunk) 이벤트가 'end' 발생한 후에는 메서드를 호출할 수 없으며, 그렇지 않으면 런타임 오류가 발생합니다.

자주 사용하는 stream.unshift() 개발자들은 스트림 사용 Transform 으로 전환하는 것을 고려해야 합니다. 자세한 내용은 섹션을 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;
    }
  }
}

푸시와 달리, 스트림 stream.unshift(chunk) 의 내부 읽기 상태를 초기화하여 읽기 과정을 종료하지 않습니다. 이는 읽기 중(즉, _read 구현 내 사용자 지정 스트림에서) 호출될 경우 readable.unshift() 예상치 못한 결과를 초래할 수 있습니다. 호출 readable.unshift() 후 즉시 푸시 를 하면 읽기 상태가 적절히 초기화되지만, 읽기 수행 중에는 호출을 피 readable.unshift() 하는 것이 가장 좋습니다.

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

매개 변수

chunk

any

데이터 덩어리를 읽기 대기열로 옮기는 것. 객체 모드에서 동작하지 않는 스트림의 경우, chunk {string}, {Buffer}, {TypedArray}, {DataView} 또는 null. 객체 모드 스트림의 경우, 는 chunk 어떤 자바스크립트 값이든 될 수 있습니다.

encoding

BufferEncoding

문자열 청크의 인코딩. 또는 와 같이 'utf8''ascii'유효 Buffer 한 인코딩이어야 합니다.

wrap(ReadableStream)

Node.js 0.10 이전에는 스트림즈가 현재 정의된 전체 node:stream 모듈 API를 구현하지 않았습니다. (자세한 내용은 참고하세요 Compatibility .)

이벤트를 'data' 방출하고 일 시정지 메서드가 자문 전용 메서드인 오래된 Node.js 라이브러리를 사용할 때, 이 readable.wrap() 메서드를 사용해 기존 스트림을 데이터 소스로 사용하는 스트림을 Readable 생성할 수 있습니다.

이 방법은 거의 사용할 필요가 readable.wrap() 없지만, 오래된 Node.js 애플리케이션 및 라이브러리와의 상호작용을 편리하게 하기 위해 제공되었습니다.

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

매개 변수

stream

ReadableStream

"구식" 읽기 쉬운 스트림

반품

[asyncIterator]()

function [asyncIterator](): AsyncIterator<any, undefined, any>

반품

AsyncIterator<any, undefined, any>

AsyncIterator 스트림을 완전히 소비하는 것.

상속된 메서드 세부 정보

eventNames()

이미터가 수신기를 등록한 이벤트를 나열하는 배열을 반환합니다.

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)[]

반품

(string | symbol)[]

상속된 곳 Stream.eventNames(스트림.eventNames)

getMaxListeners()

EventEmitter 설정되거나 emitter.setMaxListeners(n)기본값인 events.defaultMaxListeners 대한 현재 최대 수신기 값을 반환합니다.

function getMaxListeners(): number

반품

number

상속된 곳 Stream.getMaxListeners

pipe<T>(T, PipeOptions)

function pipe<T>(destination: T, options?: PipeOptions): T

매개 변수

destination

T

options

PipeOptions

반품

T

상속된 곳 스트림.파이프

setMaxListeners(number)

기본적으로 EventEmitter특정 이벤트에 대해 10 개 이상의 수신기가 추가되면 경고를 출력합니다. 이는 메모리 누수 찾기에 도움이 되는 유용한 기본값입니다. emitter.setMaxListeners() 메서드를 사용하면 이 특정 EventEmitter 인스턴스에 대한 제한을 수정할 수 있습니다. 값을 Infinity(또는 0)로 설정하여 무제한 수신기를 나타낼 수 있습니다.

호출을 연결할 수 있도록 EventEmitter대한 참조를 반환합니다.

function setMaxListeners(n: number): Readable

매개 변수

n

number

반품

상속된 곳 Stream.setMaxListeners

[captureRejectionSymbol](Error, string | symbol, any[])

Symbol.for('nodejs.rejection') 이 메서드는 이벤트를 방출할 때 약속 거부가 발생할 때 호출되며, captureRejections 이미터에서 활성화됩니다. 를 대신events.captureRejectionSymbol해 사용할 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[])

매개 변수

error

Error

event

string | symbol

args

any[]

상속된 곳 Stream.__@captureRejectionSymbol@175