中断并继续 Node.js readline async for 循环

时间:2021-01-15 10:23:39

标签: node.js

我正在使用 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 界面从停止的地方继续循环?

1 个答案:

答案 0 :(得分:0)

一旦您退出循环,异步生成器就会关闭底层流。所以我选择了这个:

    const it = this.lineReader[Symbol.asyncIterator]()

    while (true) {
      const res = await it.next()
      if (res.done) break
      line = res.value.trim()
    }
相关问题