gpt4 book ai didi

node.js - 将库函数转换为生成器

转载 作者:行者123 更新时间:2023-12-05 07:01:08 26 4
gpt4 key购买 nike

假设我们有像这样逐行读取文件的库:

var lines = lib.open('file.txt');
lines.on('line', function(line) {
console.log(line);
});

有什么方法可以包装代码并创建可与“for of”循环一起使用的生成器:

for (let line of lines) {
console.log(line);
}

lines.on('line', function(line) {
yield line; // doesnt work inside the function
console.log(line);
});

如果我在函数内部 yield 它不起作用。

谢谢

最佳答案

您可以在流上使用for await of loop

async function read(lines) {

for await (const line of lines) {
console.log('>>> ',line);
}

}
var lines = lib.open('file.txt');

read(lines)

从 block 到线
以下函数采用字符串的异步迭代并返回行的异步迭代:

   async function* chunksToLines(chunksAsync) {
let previous = '';
for await (const chunk of chunksAsync) {
previous += chunk;
let eolIndex;
while ((eolIndex = previous.indexOf('\n')) >= 0) {
// line includes the EOL
const line = previous.slice(0, eolIndex+1);
yield line;
previous = previous.slice(eolIndex+1);
}
}
if (previous.length > 0) {
yield previous;
}
}

阅读此内容了解更多详情:

关于node.js - 将库函数转换为生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63931839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com