Node.js基础学习
Node.js回调函数
Node.js异步编程的直接体现就是回调,异步编程依托回调来实现,但不是异步。回调函数在完成任务后就会被调用,Node有很多的回调函数,其所有的API都支持回调。
Eg:可以一边读取文件,一边执行其它的命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回,这样在执行代码时就没有阻塞或等待文件I/O操作。大大的提高了node.js的性能,处理大量的并发请求。(简单的理解就是同时做两件或者多件事情,减少其等待的时间)
阻塞代码:
1:创建文本和js代码。如下:
- /*阻塞代码示例*/
- var fs=require('fs'); //引入fs包,读取文件
- var data=fs.readFileSync('ahui.txt');
- console.log(data.toString());
- console.log('程序结束');
执行结果:
可以发现阻塞代码它是按照顺序执行的,等待文件读取完毕才执行打印操作。
非阻塞代码
创建文本和js,如下:
- /*非阻塞代码示例*/
- var fs=require('fs'); //引入js包
- fs.readFile('ahui.txt',function(error,data){
- if(error) throw error;
- console.log(data.toString());
- });
- console.log('程序执行结束');
这个是在读取文件的同时打印输出的。我们不需要等待文件读取完,这样就可以在读取文件时同时执行接下来的代码,大大提高了程序的性能。可以这么说,阻塞式按顺序执行的,非阻塞是不需要按顺序的,所以处理回调函数的参数,就可以写在回调函数内。
代码解析:进行I/O操作,给readFile绑定了一个回调函数function(error,data){},并在读取完ahui.txt文件后执行回调函数,期间,后面的代码继续执行,不受I/O阻塞。
附件:
理解Node.js的异步非阻塞I/O模型:https://cnodejs.org/topic/4f50dd9798766f5a610b808a