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

扯到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的。

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

过程解释如下:

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

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

这张图应该是很清晰的描述了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("读取文件完毕。。。。");

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

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

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

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

上一篇:【PHP】软件工程师职业生涯规划需务实


下一篇:将HTML段赋值给PHP变量的便捷方法,不使用转义字符