#node.js
#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
}
Смотрите Этот повтор для полного примера.
Как мне использовать тот же интерфейс строки чтения, чтобы продолжить цикл с того места, где он остановился?
Ответ №1:
Асинхронные генераторы закрывают базовый поток после выхода из цикла. Поэтому я пошел на это вместо:
const it = this.lineReader[Symbol.asyncIterator]()
while (true) {
const res = await it.next()
if (res.done) break
line = res.value.trim()
}