首页 > Web开发 > 详细

Node学习笔记——NodeJS的异步IO

时间:2014-04-07 01:24:05      阅读:556      评论:0      收藏:0      [点我收藏+]

扯到IO方面,就得去了解操作系统的使用过程和方法等知识的,这边就不介绍操作系统的知识了。

首先来介绍一段Node的程序:

var fs = require(‘fs‘);
fs.readFile("txt/io.txt","UTF-8",function(err,data){
	if(err){
		console.log(err);
	}else{
		console.log(data);
	}
});
console.log("读取文件完毕。。。。");

这边使用的是Node的异步IO方式,了解过异步编程的同志就知道上述输出结果是什么的了。

这边是先输出:“读取文件完毕。。。。” 然后再输出data或者err的。

bubuko.com,布布扣

过程解释如下:

首先上一张图(当然这张图是摘自书籍教程里面的)

bubuko.com,布布扣

这张图应该是很清晰的描述了Node的异步操作的,这个也是非常理想的异步IO,这边解释一下:当执行到异步调用的时候,应用程序知识通知到系统内核需要去干某件事情,然后应用程序就不管了,继续执行下面的应用操作,系统内核就去执行这么一件事情,等到内核执行完了之后,将结果返回给应用程序,这个返回的过程就称之为回调。

可能文字性的描述比较难理解,下面通过代码解释一下,(其实过程还是比较简单的)

其中:fs.readFile("txt/io.txt","UTF-8",function(err,data){
if(err){
console.log(err);
}else{
console.log(data);
}
}); 这个过程是IO操作的,Node使用了异步IO方式,程序只是通知系统内核去读取txt/io.txt这个文件,然后程序就不管了,继续执行console.log("读取文件完毕。。。。");等后面的代码,其中function(err,data){
if(err){
console.log(err);
}else{
console.log(data);
}

这个函数称之为回调函数。。

以上是异步IO的做法,肯定有同志会问,那同步的做法是怎样呢?上代码。。。

var fs = require(‘fs‘);
var data = fs.readFileSync("txt/io.txt","UTF-8");
console.log(data);
console.log("读取文件完毕。。。。");

使用readFileSync方法,同步操作就不存在回调的概念了。。这样就是一步一步往下执行,等fs.readFileSync("txt/io.txt","UTF-8");执行完了,再执行console.log("读取文件完毕。。。。");

bubuko.com,布布扣

意识到了 同步过程会有一个等待的过程。

Node学习笔记——NodeJS的异步IO,布布扣,bubuko.com

Node学习笔记——NodeJS的异步IO

原文:http://blog.csdn.net/enson16855/article/details/23043181

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!