Ich habe eine Anforderung, dass ich meine Aufgabe nach dem Starten eines HTTP-Servers ausführen möchte.Wie überprüft man, ob der untergeordnete Knotenprozess vollständig ausgeführt wird und auf Anfragen wartet
Aber ich kann nicht überprüfen, ob der Server gebootet wird.
Stattdessen habe ich eine setTimeout-Funktion verwendet, um davon auszugehen, dass der Server mit 2 Sekunden Intervall gestartet wird.
Könnte mir jemand, der eine bessere Lösung kennt, helfen?
Vielen Dank!
Mein Code ist wie folgt:
// main.js
function exec(command) {
var defer = q.defer();
var child = childProcess.exec(command, function (err, stdout, stderr) {
if (err) {
return defer.reject(err);
}
});
child.stdout.pipe(process.stdout);
// TODO: find another graceful way to check child process ends
setTimeout(function() {
defer.resolve();
}, 2000);
return defer.promise;
}
exec('"' + process.execPath + '" app.js')
.then(function() {
// my task here;
console.log('my task')
});
// app.js
var http = require('http'),
server;
server = http.createServer(function (req, res) {
// serve html;
res.end('hello world');
});
server.listen(9999);
// run
$> node main.js
THX ... Es wäre besser, wenn child_process relevantes Ereignis zur Verfügung gestellt zu erfassen –