我们知道开一个线程代价是特别大的,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 文件的内容。
发表评论 取消回复