Node.js系列基础学习-----回调函数,异步

Node.js基础学习 node

Node.js回调函数

Node.js异步编程的直接体现就是回调,异步编程依托回调来实现,但不是异步。回调函数在完成任务后就会被调用,Node有不少的回调函数,其全部的API都支持回调。 编程

Eg:能够一边读取文件,一边执行其它的命令,在文件读取完成后,咱们将文件内容做为回调函数的参数返回,这样在执行代码时就没有阻塞或等待文件I/O操做。大大的提升了node.js的性能,处理大量的并发请求。(简单的理解就是同时作两件或者多件事情,减小其等待的时间) 并发

阻塞代码: 异步

1:建立文本和js代码。以下: 异步编程

  1. /*阻塞代码示例*/
  2. var fs=require('fs'); //引入fs包,读取文件
  3. var data=fs.readFileSync('ahui.txt');
  4. console.log(data.toString());
  5. console.log('程序结束');

执行结果: 函数

能够发现阻塞代码它是按照顺序执行的,等待文件读取完毕才执行打印操做。 性能

非阻塞代码

建立文本和js,以下: 学习

  1. /*非阻塞代码示例*/
  2. var fs=require('fs'); //引入js包
  3. fs.readFile('ahui.txt',function(error,data){
  4.    if(error) throw error;
  5.       console.log(data.toString());
  6. });
  7. console.log('程序执行结束');

这个是在读取文件的同时打印输出的。咱们不须要等待文件读取完,这样就能够在读取文件时同时执行接下来的代码,大大提升了程序的性能。能够这么说,阻塞式按顺序执行的,非阻塞是不须要按顺序的,因此处理回调函数的参数,就能够写在回调函数内。 ui

代码解析:进行I/O操做,给readFile绑定了一个回调函数function(error,data){},并在读取完ahui.txt文件后执行回调函数,期间,后面的代码继续执行,不受I/O阻塞。spa

附件:

理解Node.js的异步非阻塞I/O模型:https://cnodejs.org/topic/4f50dd9798766f5a610b808a

相关文章
相关标签/搜索