Unten ist der Code in "practise01.js" Datei,Warum und wann process.nextTick verwenden?
function fn(name){
return f;
function f(){
var n = name;
console.log("Next TICK "+n+", ");
}
}
function myTimeout(time,msg){
setTimeout(function(){
console.log("TIMEOUT "+msg);
},time);
}
process.nextTick(fn("ONE"));
myTimeout(500,"AFTER-ONE");
process.nextTick(fn("TWO"));
myTimeout(500,"AFTER-TWO");
process.nextTick(fn("THREE"));
myTimeout(500,"AFTER-THREE");
process.nextTick(fn("FOUR"));
Der Ausgang obigen Code vom Laufen ist
[email protected]:~/myPractise/PlainNodeJSPractise01/Process$ node practise01.js
Next TICK ONE,
Next TICK TWO,
Next TICK THREE,
Next TICK FOUR,
TIMEOUT AFTER-ONE
TIMEOUT AFTER-TWO
TIMEOUT AFTER-THREE
Jetzt habe ich den Code geschrieben, ohne process.nextTick zu verwenden, in „practise02 Js“, as,
function myTimeout(time,msg){
setTimeout(function(){
console.log("TIMEOUT "+msg);
},time);
}
function fn(name){
return f;
function f(){
var n = name;
console.log("Next TICK "+n+", ");
}
}
fn("ONE")();
myTimeout(500,"AFTER-ONE");
fn("TWO")();
myTimeout(500,"AFTER-TWO");
fn("THREE")();
myTimeout(500,"AFTER-THREE");
fn("FOUR")();
nach dem obigen Code die Ausgabe läuft
folgt[email protected]:~/myPractise/PlainNodeJSPractise01/Process$ node practise02.js
Next TICK ONE,
Next TICK TWO,
Next TICK THREE,
Next TICK FOUR,
TIMEOUT AFTER-ONE
TIMEOUT AFTER-TWO
TIMEOUT AFTER-THREE
Wenn Sie sehen, sind beide Ausgänge gleich.
Also in diesem Fall muss ich mit process.nextTick gehen?
Wenn ich versuchte mehr zu lesen, was ich zu verstehen gelernt habe, ist Wenn ich eine Funktion sofort ausführen muss, wenn die Eventloop leer ist als für "process.nextTick" gehen.
Also, wie unterscheidet es sich von meinem zweiten Ansatz.
Bitte erklären Sie mir oder rufen Sie mich einige Hinweise
Sie sehen den Unterschied nicht, weil Sie entweder * nur * 'console.log' oder * nur *' process.nextTick'. Führen Sie das Konsolenprotokoll, das nächste Häkchen, console.log aus und Sie werden den Unterschied sehen. – Azamantes
Ich habe es nicht verstanden. Können Sie bitte erarbeiten –