#node.js #asynchronous #child-process
Вопрос:
У меня есть node.js подайте в суд, что spawns
еще один ребенок node.js файл с const child = spawn('npm', ['start'], { cwd: './' cwd '/'});
(вы можете видеть, что он заходит в рабочий каталог и запускает запуск npm). После запуска этого экземпляра узла я хочу отправить ему несколько HTTPS-запросов позже в коде. Однако у меня возникают проблемы с ожиданием, пока экземпляр узла действительно развернется, прежде чем эти запросы будут отправлены. Есть ли способ, которым я могу заставить код сидеть в цикле или ждать «завершения» команды spawn (здесь «готово» в общих чертах, так как ребенок на самом деле не вышел и не закончил, он только что завершил вызов запуска npm)?
Я осмотрелся, и мы не можем использовать child.on('exit')
его, так как ребенок на самом деле не выходит, он просто «инициирован». Был бы единственным возможным способом иметь слушателя на выводе childs, который ожидает определенного вывода?
Обратите внимание, что в эту функцию будут передаваться проекты npm разного размера, поэтому я не могу просто установить таймер сна на 1/2 секунды, так как он будет зависеть от того, сколько времени потребуется для запуска каждого проекта.
Спасибо!
Комментарии:
1. Вы не можете запрограммировать родителя на ожидание. Эти вещи асинхронны. Вы можете попросить ребенка отправить своему родителю сообщение через встроенный обмен сообщениями между процессами, который поддерживает nodejs, когда он запущен и запущен, чтобы затем родитель мог отправить ему все, что он захочет отправить в этот момент. Или вы можете просто передать информацию из командной строки ребенку, чтобы ребенок мог просто получить ее оттуда, когда она будет готова.