我正在试验事件循环。首先我从这个简单的代码开始阅读和打印文件的内容:了解Node.js事件循环。 process.nextTick()从不调用。为什么?
var fs = require('fs');
var PATH = "./.gitignore";
fs.readFile(PATH,"utf-8",function(err,text){
console.log("----read: "+text);
});
然后我把它放到一个无限循环中。在这种情况下,readFile函数从不执行。如果我没有弄错,那是因为Node的单线程忙于迭代而不让I/O调用被执行。
while(true){
var fs = require('fs');
var PATH = "./.gitignore";
fs.readFile(PATH,"utf-8",function(err,text){
console.log("----read: "+text);
});
}
所以,我想,这样的I/O调用分配与循环交织过程的时间做一些事情。我尝试使用process.nextTick()但它不起作用:
while(true){
process.nextTick(function(){
fs.readFile(PATH,"utf-8",function(err,text){
console.log("----read: "+text)
});
});
}
为什么它不工作,我怎么能做到这一点?
优秀的解释,谢谢JayKuri! – codependent 2014-10-10 06:55:20
非常好的解释,你可以给一些证明来验证你的关于process.nextTick的声明。像任何由节点或JavaScript文档。 – 2016-09-25 18:35:10
优秀的解释 - 现在我明白了... – Guihgo 2017-02-12 05:00:04