关于node初学,都是我通过看网上很多课程视频,有自己总结的还有老师总结的。这些文章算是我的一个学习笔记吧。(学习上永远都是小白,有问题欢迎大家指出)
这篇主要就分享下node的同步操作和异步操作,以及通过加载file模块这个例子,来自直观的看看二者之间的区别。
1、node的回调函数:如果一个方法的参数是另一个函数的名字,则这个参数本身就要回调函数,这个函数就是回调函数
1)、同步操作文件(阻塞I/O)
同步就是一个人干完这个再干那个……
所以存在排队 阻塞
一个服务员服务一、两个顾客
2)、异步操作文件(非阻塞I/O)
一个人开出一条路,然后开始做这条路上的所有事情,一口气一起做,程序瞬间完成
所有的都开始,没有排队 阻塞
一个服务员服务很多、多个顾客
2、加载file模块
(阻塞I/O/同步操作文件)
//加载fs file模块,提前建立好一个文档,这里我建立了一个名叫快捷键的txt文档
const fs=require('fs');
file='快捷键.txt';
//开始读取文件
Console.log('file start ');
//正在读取文件
data=fs.readFileSync(file);
console.log(data.toString());
//读取文件结束
Console.log('file end! ');
运行结果如下:通过运行结果就可以看出同步操作确实是先执行开始读取,直到读取完所有的文件之后,才执行读取结束。走完一个再走下一个。
( 异步操作文件/非阻塞I/O)
程序瞬间执行完毕,然后再一次一次操作(先走file star和file end再走程序)
//加载fs file模块
const fs=require('fs');
file='2.txt';
//开始读取文件
console.log('file start ');
//正在读取文件
//自带事件(当文件内容读取完毕时,然后再输出console.log(data.toString());)
fs.readFile(file,function(err,data){
console.log(data.toString());
});
//读取文件结束
console.log('file end! ');
运行结果如图: