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
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!