readable.every(fn[, options])
¥Stability: 1 - Experimental
-
fn
<Function> | <AsyncFunction> 调用流的每个块的函数。¥
fn
<Function> | <AsyncFunction> a function to call on each chunk of the stream.-
data
<any> 来自流的数据块。¥
data
<any> a chunk of data from the stream. -
options
<Object>-
signal
<AbortSignal> 如果流被销毁则中止,允许提前中止fn
调用。¥
signal
<AbortSignal> aborted if the stream is destroyed allowing to abort thefn
call early.
-
-
-
options
<Object>-
concurrency
<number> 一次调用流的fn
的最大并发调用数。默认值:1
。¥
concurrency
<number> the maximum concurrent invocation offn
to call on the stream at once. Default:1
. -
signal
<AbortSignal> 如果信号中止,允许销毁流。¥
signal
<AbortSignal> allows destroying the stream if the signal is aborted.
-
-
返回:如果
fn
返回所有块的真值,则 <Promise> 是评估true
的 promise。¥Returns: <Promise> a promise evaluating to
true
iffn
returned a truthy value for all of the chunks.
此方法类似于 Array.prototype.every
,并在流中的每个块上调用 fn
,以检查所有等待的返回值是否为 fn
的真值。一旦对块等待返回值的 fn
调用是假的,流就会被销毁,并且 promise 会用 false
实现。如果对块的所有 fn
调用都返回真值,则 promise 通过 true
实现。
¥This method is similar to Array.prototype.every
and calls fn
on each chunk
in the stream to check if all awaited return values are truthy value for fn
.
Once an fn
call on a chunk awaited return value is falsy, the stream is
destroyed and the promise is fulfilled with false
. If all of the fn
calls
on the chunks return a truthy value, the promise is fulfilled with true
.
import { Readable } from 'node:stream';
import { stat } from 'node:fs/promises';
// With a synchronous predicate.
await Readable.from([1, 2, 3, 4]).every((x) => x > 2); // false
await Readable.from([1, 2, 3, 4]).every((x) => x > 0); // true
// With an asynchronous predicate, making at most 2 file checks at a time.
const allBigFiles = await Readable.from([
'file1',
'file2',
'file3',
]).every(async (fileName) => {
const stats = await stat(fileName);
return stats.size > 1024 * 1024;
}, { concurrency: 2 });
// `true` if all files in the list are bigger than 1MiB
console.log(allBigFiles);
console.log('done'); // Stream has finished