“流数组”可读不是异步可迭代的

问题描述 投票:0回答:2

我有一个数组,我希望将其转换为可读流。为此,我正在使用

stream-array
NPM 模块。

当我尝试使用 Node.js 10 异步迭代器迭代流时

const streamify = require('stream-array');
const readable = streamify(list);
for await (let chunk of readable) {
  ...
}

我收到以下错误:

TypeError: readable is not async iterable

但是,对于常规的

fs
流来说,它工作得很好。

javascript node.js stream async-await
2个回答
0
投票

stream-array
使用旧版本的
readable-stream
库,该库似乎已经过时,并且不包含可迭代符号。

尝试在

超燃冲压发动机
中使用scramjet.fromArray。它应该完全满足您的需求。


0
投票

发生错误“TypeError:可读不是异步可迭代”,因为

streamify()
函数从
stream-array module
返回的可读对象不是异步可迭代。
for await...of loop
需要异步迭代,但
readable
对象是常规 Node.js 可读流。

要使用 Node.js 10 异步迭代器迭代流,您需要将

readable
流包装在异步迭代器中。您可以使用
asyncIterator()
模块中的
stream-to-async-iterator
函数来完成此操作。

const streamify = require('stream-array');
const { asyncIterator } = require('stream-to-async-iterator');

const list = [1, 2, 3, 4, 5];
const readable = streamify(list);

// Wrap the readable stream in an async iterable
const asyncReadable = asyncIterator(readable);

for await (let chunk of asyncReadable) {
  console.log(chunk);
}
© www.soinside.com 2019 - 2024. All rights reserved.