Die Codekopie lautet wie folgt:
var http = required ('http');
Funktion Fib (n) {
if (n <2) {
Rückkehr 1;
} anders {
Return Fib (n - 2) + Fib (n - 1);
}
}
var server = http.createServer (Funktion (req, res) {
var num = parseInt (req.url.substring (1), 10);
Res.WriteHead (200);
res.end (fib (num) + "/n");
});
Server.Listen (8000);
Das obige Beispiel liefert einen Fibonacci -Sequenzberechnungserhalt. Da diese Berechnung ziemlich zeitaufwändig ist und ein einzelner Thread ist, kann nur einer verarbeitet werden, wenn mehrere Anforderungen gleichzeitig vorliegen. Dieses Problem kann durch child_process.fork () gelöst werden.
Hier ist ein Beispiel auf der offiziellen Website. Dieses Beispiel kann verwendet werden, um die Funktion von fork () gut zu verstehen.
Die Codekopie lautet wie folgt:
var cp = require ('child_process');
var n = cp.Fork (__ DirName + '/Sub.js');
N.on ('Nachricht', Funktion (m) {
console.log ('übergeordnete Nachricht:', m);
});
N.Send ({Hallo: 'World'});
Das Ergebnis der Ausführung des obigen Codesnippets:
Die Codekopie lautet wie folgt:
Übergeordnete Nachricht: {foo: 'bar'}
Kind hat Nachricht: {Hallo: 'Welt'}
Der Inhalt von sub.js lautet wie folgt:
Die Codekopie lautet wie folgt:
process.on ('message', function (m) {
console.log ('Kind hat eine Nachricht:', m);
});
process.send ({foo: 'bar'});
Das Prozessobjekt enthält eine Send () -Methode im untergeordneten Prozess und veröffentlicht das Nachrichtenobjekt jedes Mal, wenn es eine Nachricht empfängt
Was ein wenig schwindelig ist, ist, dass die von Child.Send () gesendete Nachricht nach der Verfahrensmethode empfangen wird.
In Bezug auf dieses Beispiel können wir den ersten Dienst verbessern, der Fibonacci -Daten bereitstellt, sodass jede Anforderung einen separaten neuen Prozess zur Behandlung von ihm enthält.
Die Codekopie lautet wie folgt:
var http = required ('http');
var cp = require ('child_process');
var server = http.createServer (Funktion (req, res) {
var child = cp.fork (__ Dirname + '/Fibonacci-calc.js');//each Anfrage erzeugt ein neues Kind einzeln
Child.on ('Nachricht', Funktion (m) {
res.end (M.Result + '/n');
});
var input = parseInt (req.url.substring (1));
Child.Send ({Eingabe: Eingabe});
});
Server.Listen (8000);
Fibonacci-calc.js
Die Codekopie lautet wie folgt:
Funktion Fib (n) {
if (n <2) {
Rückkehr 1;
} anders {
Return Fib (n - 2) + Fib (n - 1);
}
}
process.on ('message', function (m) {
process.send ({result: fib (m.input)});
});
Besuchen Sie nach Beginn des Dienstes http: // localhost: 8080/9, um den Wert der Fibonacci -Sequenz von 9 zu berechnen.
Das obige dreht sich alles um diesen Artikel, ich hoffe es gefällt euch.