Завершить программу NodeJS, используя потоки - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть небольшая программа, которая запускает конвейер ETL для некоторых данных XML.Я использую pump ( пакет ) для объединения потоков Readable, Duplex и Writeable.Я получаю окончательный ответный вызов "Готово", но программа не завершается.Это единственный способ справиться с этим, чтобы позвонить process.exit(0)?

Вот фрагмент кода:

pump(
    fileStream,
    parser,
    inserter,
    (err) => {
        if (err) {
            console.log(err);
        } else {
            console.log('done');
        }
    });

Редактировать: Просто чтобы закрыть цикл, то, что предложил @FakeFootball, добивается цели:

pump(
        fileStream,
        parser,
        inserter,
        (err) => {
            if (err) {
                console.log(err);
            } else {
                parser.destroy();
                inserter.destroy();
                fileStream.destroy();
            }
        });

1 Ответ

0 голосов
/ 25 февраля 2019

Не видя остальной части вашего кода, я предполагаю, что вы не закрываете / уничтожаете ни один из ваших потоков, поэтому они все еще активны.Узел не закроется, так как он все еще ожидает потенциальных действий в этих потоках.Посмотрите пример в разделе использования документации насоса, чтобы узнать, как они закрывают поток, и он уничтожает остальные из них. Использование насоса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...