当前位置: 首页 > 后端技术 > Node.js

Node.js回调函数阻塞与非阻塞

时间:2023-04-03 12:05:41 Node.js

Node.js异步改造就是回调的直接体现。异步编程依赖于回调,但是不能说使用了回调之后程序就是异步的。回调函数将在任务完成后被调用。Node使用了大量的回调函数,Node的所有API都支持回调函数。比如我们在执行其他命令的同时通过i读取文件。读取文件后,我们将文件内容作为回调函数的参数返回。这样,在执行代码时就不会阻塞或等待文件I/O操作。这大大提高了Node的性能,可以处理大量的并发请求。接下来写一个阻塞代码示例,创建一个文件input.txt,内容如下学习前端知识,记录笔记,来到segmentfault。创建main.js文件,代码如下:constfs=require("fs")//fs模块用于读写系统文件和目录。constdata=fs.readFileSync('input.txt');console.log(data.toString());console.log("执行程序结束")非阻塞代码示例constfs=require("fs")//fs模块用于读写系统文件和目录。fs.readFile('input.txt',(err,data)=>{if(err){console.log(err)}else{console.log(data.toString())}})console.log("程序执行结束!”)以上两个例子说明了阻塞和非阻塞的区别。第一个实例在读取文件后完成执行程序。在第二种情况下,我们不需要等待文件被读取,这样就可以在读取文件的同时执行下一段代码,大大提高了程序的性能。所以阻塞是按顺序执行的,非阻塞不需要按顺序执行,所以如果我们需要处理回调函数的参数,就需要写在回调函数中。