💛什么是回调函数
-
Node.js异步编程 体现在回调,依托于回调来实现
-
在完成任务后,就会调用回调函数
-
Node.js所有API都支持回调函数
-
回调函数一般作为函数最后一个参数出现
-
例如某API,使用如下:
xxx( //第一个参数 12345, //第二个参数 56789, //回调函数 function(){ } /* 回调函数也可写成 () => { } */ );
💛回调函数对异步编程的影响
通过两个例子来说明
💚阻塞代码示例
-
创建一个文件夹 ” demo1 “
-
在该文件夹下运行终端,执行 cnpm install fs,需要安装读取文件的依赖包
-
在 ” demo1 “ 文件夹下创建一个 ” a.txt “ 文件,内容如下:
Hello
-
在 ” demo1 “ 文件夹下创建一个 ” main.js “ 文件,内容如下:
1 var fs = require("fs"); 2 var data = fs.readFileSync('a.txt'); 3 console.log(data.toString()); 4 console.log("程序执行结束");
在 fs.readFileSync(‘a.txt’) 函数读取完这个文件后才会执行后面的程序
-
在该文件夹下运行终端,执行 node main.js,结果如下:
Hello 程序执行结束
💚非阻塞代码示例
-
所有文件与 ”阻塞代码示例“ 一样,唯一不一样的地方是上面的 第2,3 行代码,替换后,” demo1 “ 文件夹 内容如下:
1 var fs = require("fs"); 2 fs.readFile('a.txt',function(err,data){ 3 if(err){ 4 console.log(err); 5 } 6 console.log(data.toString()); 7 }); 8 console.log("程序执行结束");
fs.readFile,该函数时在文件未完全读取时,即可同步执行在该方法后面的程序(如第8行),待读取完成时,就会执行 fs.readFile 方法 的第二个参数(回调函数)中的内容
-
在该文件夹下运行终端,执行 node main.js,结果如下:
程序执行结束 Hello
💛总结
- 回调函数是什么?
- 异步编程是什么?
- 回调函数对异步编程的影响?
都知道了吗