关于node回调函数中同步和异步操作的理解
1、node的回调函数:如果一个方法的参数是另一个函数的名字,则这个参数本身就要回调函数,这个函数就是回调函数
1)、同步操作文件(阻塞I/O)
同步就是一个人干完这个再干那个……
所以存在排队 阻塞
就像很多顾客,一个服务员一个个的服务顾客
2)、异步操作文件(非阻塞I/O)
一个人开出一条路,然后开始做这条路上的所有事情,一口气一起做,程序瞬间完成
所有的都开始,没有排队 阻塞
就像一个服务员服务很多、多个顾客
2、加载file模块
(阻塞I/O/同步操作文件)
首先建立好一个2.txt文件(内容随意)
//加载fs file模块 const fs=require('fs'); file='2.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! ');