nodejs的单线程异步处理

widuu 2013-4-25 PHP技术 4,315 4 喜欢 (0)

我们知道开一个线程代价是特别大的,node.js实现时单线程异步处理,用回掉函数实现异步处理,我们可以做个测试我们先写一个1.txt 里边写上你好 node.js
然后我们加载文件读取模块 写一个方法
[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');
[/js]
上边程序的执行代码的执行结构是什么样子的呢?
[js]
D:\nodejs>node file.js
end
你好 node.js
[/js]
这样的,他是为什么这样呢?是回掉函数实现的单线程的异步处理 我们用同步的试试readFileSync
[js]
var fs = require('fs');
var data = fs.readFileSync('1.txt','utf-8');
console.log(data);
console.log('end');
[/js]
输出
[js]
D:\nodejs>node file.js
你好 node.js
end
[/js]
你看这样就出现同步了吧 他是怎么实现的异步的 是回掉函数处理
[js]
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');
[/js]
fs.readFile 调用时所做的工作只是将异步式 I/O 请求发送给了操作系统,然后立即返回并执行后面的语句,执行完以后进入事件循环监听事件。当 fs 接收到 I/O 请求完成的事件时,事件循环会主动调用回调函数以完成后续工作。因此我们会先看到 end. ,再看到 file.txt 文件的内容。

转载请注明来自微度网络,本文标题:《nodejs的单线程异步处理》

喜欢 0 发布评论
Top