我正在使用 Node.js readline 接口使用异步 for-of 循环逐行读取文件。但我希望能够控制流程,但我不知道如何中断并从中断处继续循环。
简化示例:
const fileStream = fs.createReadStream('input.txt')
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
})
for await (const line of rl) {
console.log(line) // This works
break
}
for await (const line of rl) {
console.log(line) // This does not print anything
}
有关完整示例,请参阅此 replit。
如何使用相同的 readline 界面从停止的地方继续循环?
答案 0 :(得分:0)
一旦您退出循环,异步生成器就会关闭底层流。所以我选择了这个:
const it = this.lineReader[Symbol.asyncIterator]()
while (true) {
const res = await it.next()
if (res.done) break
line = res.value.trim()
}