我们知道开一个线程代价是特别大的,node.js实现时单线程异步处理,用回掉函数实现异步处理,我们可以做个测试我们先写一个1.txt 里边写上你好 node.js 然后我们加载文件读取模块 写一个方法

 var fs = require('fs');
 fs.readFile('1.txt','utf-8',function(err,data){
   if(err){
        console.log(err);
    }else{
        console.log(data);
   }
 });
console.log('end');
上边程序的执行代码的执行结构是什么样子的呢?
D:\nodejs>node file.js
end
你好 node.js
这样的,他是为什么这样呢?是回掉函数实现的单线程的异步处理 我们用同步的试试readFileSync
var fs = require('fs');
var data = fs.readFileSync('1.txt','utf-8');
console.log(data);
console.log('end');
输出
D:\nodejs>node file.js
你好 node.js
end
你看这样就出现同步了吧 他是怎么实现的异步的 是回掉函数处理
var fs = require('fs');
	function readFileBack(err,data){
		if(err){
			console.log(err);
		}else{	
			console.log(data);
		}
	}
fs.readFile('1.txt','utf-8',readFileBack);
console.log('end');
fs.readFile 调用时所做的工作只是将异步式 I/O 请求发送给了操作系统,然后立即返回并执行后面的语句,执行完以后进入事件循环监听事件。当 fs 接收到 I/O 请求完成的事件时,事件循环会主动调用回调函数以完成后续工作。因此我们会先看到 end. ,再看到 file.txt 文件的内容。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部