下面是存在于“practise01.js”文件中的代码,为什么以及何时使用process.nextTick?
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"));
从上面的代码运行的输出是
[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
现在我写的代码,而无需使用process.nextTick,在“practise02的.js”,如下所示,
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")();
运行上述代码后输出是
[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
如果您看到两个输出都是相同的。
那么在这种情况下,我需要去process.nextTick?
当我试图阅读更多,我明白了如果我需要立即执行一些函数,当事件回滚是空的比去“process.nextTick”。
那么它与我的第二种方法有什么不同?
请给我解释一下或者给我一些指点在您的文章
因为您使用*仅*'console.log'或*仅*'process.nextTick'你看不到的差异。做控制台日志,然后打勾,console.log,你会看到不同之处。 – Azamantes
我没有明白。你能否详细说明 –