nodejs-06-回调函数-阻塞与非阻塞
时间:2020-05-09 21:57:44
收藏:0
阅读:65
Node.js 回调函数
node.js 异步编程的 直接体现 就是回调。
异步编程依托于回调来实现,但不能说 使用了回调后 程序就异步化了。
回调函数 在完成任务后 就会被调用。
node使用了大量的回调函数,node所有api都支持回调函数。
例如,我们可以一边读取文件,一边执行其他命令。
在文件读取完成后,我们将文件内容 作为回调函数的参数返回。
这样,在执行代码时,就没有阻塞或等待文件 I/O 操作。
这就 大大 提高了 nodejs 的性能,可以处理大量的 并发请求。
回调函数 一般 作为函数的 最后一个参数 出现:
function foo1(name,age,callback){}
function foo1(value,callback1,callback2){}
阻塞代码实例
创建一个文件 input.txt,内容如下:
创建 main.js 文件,代码如下:
var fs = require("fs");
var data = fs.readFileSync(‘input.txt‘);
console.log(data.toString());
console.log("程序 执行 结束!")
以上代码 执行结果 如下:
$ node main.js
菜鸟教程官网地址:www.runoob.com
程序执行结束!
非阻塞代码实例
创建一个文件 input.txt,内容如下:
菜鸟教程官网地址:www.runoob.com
创建main.js文件,代码如下:
var fs = require("fs");
fs.readFile(‘input.txt‘,function(err,data){
if(err) return console.error(err);
console.log(data.toString());
});
console.log("程序执行结束了");
以上代码执行结果如下:
$ node main.js
程序执行结束!
菜鸟教程官网地址:www.runoob.com
以上两个实例,我们了解了阻塞与非阻塞调用的不同。
第一个实例在文件读取完后才执行程序。
第二个实例我们不需要等待文件读取完,这样就可以在读取文件时,同时执行接下来的代码,大大提高了程序的性能。
因此,阻塞是按顺序执行的,而非阻塞是不需要按顺序的,
所以,如果需要处理回调函数的参数,我们就需要 写在回调函数内。
因此,所以,这两句话,不构成,因果关系。这里写的,有问题。
原文:https://www.cnblogs.com/gnuzsx/p/12860164.html
评论(0)