Readable class
- يمتد
-
Stream
المنشئون
| Readable(Readable |
الخصائص
| closed | لقد تم إصدار الخبر |
| destroyed | تم استدعاء بعد |
| errored | يرجع خطأ إذا تم تدمير التدفق مع وجود خطأ. |
| readable | هل |
| readable |
يرجع ما إذا كان التدفق قد تم تدميره أو تم تعرضه للخطأ قبل إصدار |
| readable |
يعود ما إذا |
| readable |
الحصول على خاصية |
| readable |
يصبح |
| readable |
تعكس هذه الخاصية الحالة الحالية للجدول |
| readable |
يعيد قيمة تم تمريرها |
| readable |
تحتوي هذه الخاصية على عدد البايتات (أو الكائنات) في قائمة الانتظار الجاهزة للقراءة. توفر القيمة بيانات استبطانية حول حالة |
| readable |
الحصول على خاصية |
الأساليب
| add |
|
| add |
|
| compose(Writable |
تسمح هذه الطريقة أيضا بتوفير ال () راجع |
| destroy(Error) | تدمير الدفق. اختياريا، تصدر بمجرد يجب ألا يتجاوز المنفذون هذه الطريقة، بل ينفذون |
| drop(number, Abortable) | تعيد هذه الطريقة تدفقا جديدا مع أول قطع حد تم حذفها من البداية. |
| emit(string | symbol, any[]) | |
| emit<E>(E, Readable |
|
| every((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
هذه الطريقة مشابهة ل |
| filter((data: any, options?: Abortable) => boolean | Promise<boolean>, Readable |
تسمح هذه الطريقة بتصفية التدفق. لكل جزء في التدفق سيتم استدعاء دالة fn وإذا أعادت قيمة تروثي، سيتم تمرير القطعة إلى تدفق النتيجة.
إذا أعادت دالة fn وعدا - فسيكون |
| find((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
|
| find<T>((data: any, options?: Abortable) => data, Pick<Readable |
هذه الطريقة مشابهة ل |
| flat |
تعيد هذه الطريقة تدفقا جديدا عن طريق تطبيق الاستدعاء المعطى على كل جزء من التدفق ثم تسطيح النتيجة. من الممكن إرجاع تدفق أو تكرار متكرر أو غير متزامن من fn وسيتم دمج (تسطيح) التدفقات الناتجة في التدفق المعاد الآن. |
| for |
تسمح هذه الطريقة بتكرار التدفق. لكل جزء في التدفق سيتم استدعاء دالة fn .
إذا أعادت دالة fn وعدا - فسيكون تختلف هذه الطريقة عن تختلف هذه الطريقة عن الاستماع إلى الحدث |
| from(Iterable<any> | Async |
طريقة مساعدة لإنشاء تدفقات قابلة للقراءة من المكررات. |
| from |
طريقة مفيدة لإنشاء من |
| is |
يعيد ما إذا كان التدفق قد قرأ من أو تم إلغاؤه. |
| is |
ترجع
|
| iterator(Readable |
المكرر الذي يتم إنشاؤه بهذه الطريقة يمنح المستخدمين خيار إلغاء تدمير التدفق إذا خرجت الحلقة |
| listener |
|
| listener |
|
| listeners(string | symbol) | |
| listeners<E>(E) | |
| map((data: any, options?: Abortable) => any, Readable |
تسمح هذه الطريقة بالتعيين عبر التيار. سيتم استدعاء دالة fn لكل جزء في التدفق.
إذا أعادت دالة fn وعدا - سيتم |
| off(string | symbol, (args: any[]) => void) | |
| off<E>(E, (args: Readable |
|
| on(string | symbol, (args: any[]) => void) | |
| on<E>(E, (args: Readable |
|
| once(string | symbol, (args: any[]) => void) | |
| once<E>(E, (args: Readable |
|
| pause() | ستتسبب هذه الطريقة
|
| prepend |
|
| prepend |
|
| prepend |
|
| prepend |
|
| push(any, Buffer |
|
| raw |
|
| raw |
|
| read(number) | تقرأ الطريقة يحدد الوسيط الاختياري إذا لم يتم تحديد الوسيط يجب أن يكون الوسيط يجب استدعاء الطريقة
كل استدعاء إلى لذلك، لقراءة محتوى الملف بالكامل من ،
التدفق إذا سيتم إعادة |
| reduce<T>((previous: any, data: any, options?: Abortable) => T) | تستدعي هذه الطريقة fn على كل جزء من التدفق بالترتيب، وتمرر له النتيجة من الحساب على العنصر السابق. يعيد وعدا بالقيمة النهائية للتخفيض. إذا لم يتم توفير قيمة ابتدائية ، يستخدم الجزء الأول من التيار كقيمة ابتدائية.
إذا كان التدفق فارغا، يتم رفض الوعد مع a تقوم دالة المخفض بتكرار التيار عنصرا بعنصر، مما يعني أنه لا يوجد معامل التزامن أو التوازي. لإجراء التقليل في نفس الوقت، يمكنك استخراج الدالة غير المتزامنة إلى |
| reduce<T>((previous: T, data: any, options?: Abortable) => T, T, Abortable) | |
| remove |
|
| remove |
|
| remove |
|
| remove |
|
| resume() | تؤدي هذه الطريقة يمكن استخدام هذه
|
| set |
تحدد الطريقة بشكل افتراضي، لا يتم تعيين ترميز وسيتم إرجاع بيانات التدفق ككائنات سيتعامل التدفق
|
| some((data: any, options?: Abortable) => boolean | Promise<boolean>, Pick<Readable |
هذه الطريقة مشابهة ل |
| take(number, Abortable) | تعيد هذه الطريقة تدفقا جديدا مع أول قطع حدي . |
| to |
تسمح هذه الطريقة بالحصول بسهولة على محتويات التدفق الكهربائي. وبما أن هذه الطريقة تقرأ التدفق بالكامل إلى الذاكرة، فإنها تلغي فوائد التدفقات. الهدف منها التوافق والراحة، وليس كطريقة أساسية لاستهلاك التدفقات. |
| to |
طريقة مفيدة لإنشاء ويب |
| unpipe(Writable |
تقوم الطريقة إذا لم يتم تحديد الموضوع إذا تم تحديد ال لكن
|
| unshift(any, Buffer |
تمرير
لا يمكن استدعاء الطريقة يجب على المطورين الذين يستخدمون
على عكس الدفع، |
| wrap(Readable |
قبل Node.js 0.10، لم تكن التدفقات تنفذ واجهة برمجة تطبيقات الوحدة بالكامل عند استخدام مكتبة Node.js قديمة تصدر نادرا ما تكون ضرورية للاستخدام
|
| [async |
الأساليب المتوارثة
| event |
إرجاع صفيف يسرد الأحداث التي قام المرسل بتسجيل المستمعين لها.
|
| get |
إرجاع قيمة وحدة الإصغاء القصوى الحالية |
| pipe<T>(T, Pipe |
|
| set |
بشكل افتراضي، ستقوم إرجاع مرجع إلى |
| [capture |
يتم استدعاء هذه
|
تفاصيل المنشئ
Readable(ReadableOptions<Readable>)
تفاصيل الخاصية
closed
لقد تم إصدار الخبر true بعد 'close' ذلك.
closed: boolean
قيمة الخاصية
boolean
destroyed
تم استدعاء بعد truereadable.destroy() ذلك.
destroyed: boolean
قيمة الخاصية
boolean
errored
يرجع خطأ إذا تم تدمير التدفق مع وجود خطأ.
errored: null | Error
قيمة الخاصية
null | Error
readable
هل true من الآمن استدعاء القراءة'error' الصحيحة، مما يعني أن التدفق لم يتم تدميره أو انبعاث أو 'end'.
readable: boolean
قيمة الخاصية
boolean
readableAborted
يرجع ما إذا كان التدفق قد تم تدميره أو تم تعرضه للخطأ قبل إصدار 'end'.
readableAborted: boolean
قيمة الخاصية
boolean
readableDidRead
يعود ما إذا 'data' كان قد تم إصداره.
readableDidRead: boolean
قيمة الخاصية
boolean
readableEncoding
الحصول على خاصية encoding تيار معين Readable . يمكن تعيين الخاصية encoding باستخدام طريقة setEncoding (الترميز ).
readableEncoding: null | BufferEncoding
قيمة الخاصية
null | BufferEncoding
readableEnded
readableFlowing
تعكس هذه الخاصية الحالة الحالية للجدول Readable كما هو موضح في قسم الحالات الثلاث .
readableFlowing: null | boolean
قيمة الخاصية
null | boolean
readableHighWaterMark
يعيد قيمة تم تمريرها highWaterMark عند إنشاء هذا Readable.
readableHighWaterMark: number
قيمة الخاصية
number
readableLength
تحتوي هذه الخاصية على عدد البايتات (أو الكائنات) في قائمة الانتظار الجاهزة للقراءة. توفر القيمة بيانات استبطانية حول حالة highWaterMark.
readableLength: number
قيمة الخاصية
number
readableObjectMode
الحصول على خاصية objectMode تيار معين Readable .
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).
تسمح هذه الطريقة أيضا بتوفير ال () 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' بإصدار حدث (إلا إذا emitClose تم ضبطه على false). بعد هذه المكالمة، سيطلق التدفق القابل للقراءة أي موارد داخلية وسيتم تجاهل المكالمات اللاحقة إليها 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">)
هذه الطريقة مشابهة ل Array.prototype.every و تستدعي fn على كل جزء في التدفق للتحقق مما إذا كانت جميع قيم الإرجاع المنتظرة هي قيمة حقيقية ل fn. بمجرد أن يكون استدعاء fn على قيمة إرجاع جزء awaitومستوى خاطئ، يتم تدمير التدفق ويتحقق الوعد ب 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>
وعد يقيم إذا كانت trueFN تعود بقيمة حقيقية لكل جزء من القطع.
filter((data: any, options?: Abortable) => boolean | Promise<boolean>, ReadableOperatorOptions)
تسمح هذه الطريقة بتصفية التدفق. لكل جزء في التدفق سيتم استدعاء دالة fn وإذا أعادت قيمة تروثي، سيتم تمرير القطعة إلى تدفق النتيجة.
إذا أعادت دالة fn وعدا - فسيكون awaitذلك الوعد ed.
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">)
هذه الطريقة مشابهة ل Array.prototype.find وتستدعي fn على كل جزء في التدفق لإيجاد قطعة ذات قيمة حقيقية ل fn. بمجرد أن تصبح قيمة العودة المنتظرة لنداء fn هي Truthy، يتم تدمير البث ويتحقق الوعد بقيمة أعاد fn قيمة truthy.
إذا أعادت جميع استدعاءات 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 وعدا - فسيكون awaitذلك الوعد ed.
تختلف هذه الطريقة عن for await...of الحلقات في أنها يمكنها معالجة الأجزاء بشكل اختياري في نفس الوقت.
بالإضافة إلى ذلك، لا يمكن إيقاف التكرار forEach إلا بعد اجتياز خيار وإلغاء signal AbortController المرتبط بينما for await...of يمكن إيقافه باستخدام break أو return.
في كلتا الحالتين سيتم تدمير التيار.
تختلف هذه الطريقة عن الاستماع إلى الحدث '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.asyncIterator البروتوكول أو Symbol.iterator التكرار. يصدر حدث 'خطأ' إذا تم تمرير قيمة فارغة.
- options
-
ReadableOptions<Readable>
الخيارات متاحة ل new stream.Readable([options]). افتراضيا، Readable.from() سيتم تعيين options.objectMode على true، إلا إذا تم إلغاء ذلك صراحة بتعيين options.objectMode .false
المرتجعات
fromWeb(ReadableStream<any>, Pick<ReadableOptions<Readable>, "encoding" | "highWaterMark" | "objectMode" | "signal">)
طريقة مفيدة لإنشاء من Readable الويب ReadableStream.
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...of بواسطة return، 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 وعدا - سيتم awaited ذلك الوعد قبل تمريره إلى تدفق النتائج.
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 يتم إرجاعها. بشكل افتراضي، يتم إرجاع البيانات ككائن Buffer ما لم يتم تحديد ترميز باستخدام الطريقة readable.setEncoding() أو كان التدفق يعمل في وضع الكائن.
يحدد الوسيط الاختياري size عددا محددا من البايتات التي يجب قراءتها. إذا size لم تكن البايتات متاحة للقراءة، null فسيتم إرجاعها ما لم ينتهي التدفق، وفي هذه الحالة سيتم إرجاع جميع البيانات المتبقية في المخزن الداخلي.
إذا لم يتم تحديد الوسيط size ، فسيتم إرجاع جميع البيانات الموجودة في المخزن الداخلي.
يجب أن يكون الوسيط size أقل من أو يساوي 1 جيجابايت.
يجب استدعاء الطريقة 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 في وضع الكائن سيعيد دائما عنصرا واحدا من استدعاء إلى readable.read(size)، بغض النظر عن قيمة الوسيط size .
إذا readable.read() أعادت الطريقة جزءا من البيانات، 'data' فسيتم إصدار حدث أيضا.
سيتم إعادة nullقراءة المكالمة بعد 'end' إرسال الحدث. لن يظهر أي خطأ في وقت التشغيل.
function read(size?: number): any
المعلمات
- size
-
number
وسيط اختياري لتحديد كمية البيانات التي يجب قراءتها.
المرتجعات
any
reduce<T>((previous: any, data: any, options?: Abortable) => T)
تستدعي هذه الطريقة fn على كل جزء من التدفق بالترتيب، وتمرر له النتيجة من الحساب على العنصر السابق. يعيد وعدا بالقيمة النهائية للتخفيض.
إذا لم يتم توفير قيمة ابتدائية ، يستخدم الجزء الأول من التيار كقيمة ابتدائية.
إذا كان التدفق فارغا، يتم رفض الوعد مع a TypeError مع ERR_INVALID_ARGS خاصية الرمز.
تقوم دالة المخفض بتكرار التيار عنصرا بعنصر، مما يعني أنه لا يوجد معامل التزامن أو التوازي. لإجراء التقليل في نفس الوقت، يمكنك استخراج الدالة غير المتزامنة إلى 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)
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() إلى استئناف 'data' تدفق متوقف Readable صراحة لإصدار أحداث، مما يحول التدفق إلى وضع التدفق.
يمكن استخدام هذه 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') يؤدي إلى ترميز البيانات بصيغة السلسلة السداسية عشرية.
سيتعامل التدفق 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">)
هذه الطريقة مشابهة ل Array.prototype.some وتستدعي fn على كل جزء في التدفق حتى تكون true قيمة العائد المنتظرة (أو أي قيمة تروثي). بمجرد أن يكون استدعاء fn على قيمة إرجاع جزء awaitمن ال Truey، يتم تدمير التدفق ويتحقق الوعد ب true.
إذا لم تعط أي من استدعاءات fn على القطع قيمة حقيقية، يتم الوفاء بالوعد ب 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>
وعد يقيم true إذا كان FN يعيد قيمة تروثي لأحد الأجزاء على الأقل.
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)
طريقة مفيدة لإنشاء ويب ReadableStream من Readable.
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)
تمرير chunk ك null يشير إلى نهاية التدفق (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) لن ينهي عملية القراءة عن طريق إعادة ضبط حالة القراءة الداخلية للبث.
يمكن أن يسبب ذلك نتائج غير متوقعة إذا readable.unshift() تم استدعاؤه أثناء القراءة (أي من داخل تنفيذ _read على تدفق مخصص). اتباع النداء بالضغطreadable.unshift() الفوري سيعيد ضبط حالة القراءة بشكل مناسب، لكن من الأفضل تجنب الاتصال readable.unshift() أثناء إجراء القراءة.
function unshift(chunk: any, encoding?: BufferEncoding)
المعلمات
- chunk
-
any
قطعة بيانات لإعادة التحويل إلى قائمة القراءة. بالنسبة للتدفقات التي لا تعمل في وضع الكائن، chunk يجب أن تكون {string}، {Buffer}، {TypedArray}، {DataView} أو null. بالنسبة لتدفقات وضع الكائن، chunk قد تكون أي قيمة جافا سكريبت.
- encoding
-
BufferEncoding
ترميز قطع السلاسل النصية. يجب أن يكون ترميزا صالحا Buffer ، مثل 'utf8' أو 'ascii'.
wrap(ReadableStream)
قبل Node.js 0.10، لم تكن التدفقات تنفذ واجهة برمجة تطبيقات الوحدة بالكامل node:stream كما هي معرفة حاليا. (انظر Compatibility لمزيد من المعلومات.)
عند استخدام مكتبة Node.js قديمة تصدر 'data' أحداثا ولديها طريقة توقف مؤقت تعتمد فقط على التوجيه، يمكن استخدام هذه 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
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
الموروث من Stream.pipe
setMaxListeners(number)
بشكل افتراضي، ستقوم EventEmitters بطباعة تحذير إذا تمت إضافة أكثر من 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