Это просто демо, а не мой настоящий код ...
При необходимости я могу прикрепить свой реальный код.
У меня есть скриптA , который выводит логи через: process.stdout.write
.
Затем я хочу получить каждый журнал от родителя scriptB с:
const cp = child_process.spawn('node', ['scriptA.js']);
cp.stdout.on('data', (data) => {
console.log(data.toString() + '\n');
});
который должен вывести:
line a
line b
line c
Но некоторые строки объединяются в одну (если они выводятся за короткий промежуток времени) :
line a
line b
line c
Я пытался использовать тайм-ауты в child_process, но, конечно, он просто задерживает их все. Я также пытался использовать случайные таймауты, но это тоже не сработало, так как это просто испортило порядок журналов.
Кто-нибудь знает, есть ли способ решить эту проблему?
EDIT:
Я только что подумал о разделении журнала на родительском и отправке журналов построчно, если присутствует более одного:
cp.stdout.on('data', (data) => {
let logs = data.toString().split('\n').filter(x => x);
logs.forEach(el => {
console.log(`${el}\n\n`)
});
});
Это делает то, что я хочу, но я не думаю, что это лучший подход ...
Любой совет поможет!