В приложении узла 13 у меня есть это:
import {
promises as fs,
createReadStream
} from 'fs';
import {
createInterface
} from 'readline';
export async function* lines (path) {
const
input = createReadStream(path),
reader = createInterface({ input })
;
console.log('start');
for await (const line of reader)
if (!!(yield line)) break;
console.log('stop');
reader.close();
input.close();
return null;
}
Чтобы прочитать только первую строку файла, я использую этот код:
const
i = lines(…),
line = (await i.next(true)).value
;
await i.return(line);
//logs "start"
// the value of line is correct
Но почему stop
никогда не регистрировался, даже если к коду добавлено await i.return(line)
? Я думаю, readstream
не закрывается таким образом ...