Выход из процесса, когда все обратные вызовы Readline on ('line') завершены - PullRequest
0 голосов
/ 07 марта 2019

У меня есть программа Node v10.14.1, которая построчно читает файл CSV, используя интерфейс readline

My .on('line') - это обратный вызов async, выполняющий некоторые операции чтения / записи из БД, поэтому я использую async/await для обработки обещаний.

Короткая версия интересующего вас блока кода программы будет выглядеть примерно так:

const readline = require('readline');
const filesystem = require('fs');

const reader = readline.createInterface({
    input: filesystem.createReadStream(pathToSomeCSV)
});

reader.on('line', async (line) => {
  await doSomeDBStuff();
})

Если я оставлю вышеизложенное таким, какой он есть, процесс не завершится. Однако, если я

reader.on('close', () => {process.exit()});

затем процесс завершается до завершения всех обратных вызовов on('line') и разрешения их обещаний.

У меня вопрос: есть ли способ сказать: «После прочтения всех строк И завершения всех обратных вызовов on('line') с их обещаниями, а затем выйти из процесса (я полагаю с process.exit())»?

...