如何解决将库函数转换为生成器
让我们说我们有一个库可以像这样逐行读取文件:
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);
});
如果我在函数内部屈服,将无法正常工作。
谢谢
解决方法
您可以在流上使用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)
从块到行
以下函数在字符串上采用异步可迭代,并在行上返回异步可迭代:
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;
}
}
请阅读以获取更多详细信息:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。