Почему этот генератор asyn c не выходит - PullRequest
0 голосов
/ 21 марта 2020

В приложении узла 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 не закрывается таким образом ...

...