什么是回调

函数调用的三种:同步调用、回调、异步调用
回调是一种双向调用模式
可以通过回调函数来实现回调

阻塞和非阻塞

阻塞和非阻塞关注的成熟在等待调用结果(消息,返回值)时的状态
阻塞就是做不完不准回来
非阻塞就是你先做,我再去看看做点其他事 ,完了告诉我一声

通过回调函数来实现回调

  1. // 阻塞时代码
  2. // 比如读取文件时是没有办法干其他事的
  3. const fs = require('fs');
  4. const data = fs.readFileSync('data.txt'); //阻塞式读取 不带sync就是异步读取。
  5. console.log(data.toString());//如果不转成字符串会转成二进制的代码

必须等待读取完成才会执行下一步的代码。

  1. // 非阻塞代码
  2. const fs = require('fs');
  3. fs.readFile('data.txt', function(err, data){
  4. if(err){
  5. return console.log(err);
  6. }else{
  7. return console.log(data.toString());
  8. }
  9. });// 异步调用 匿名函数就是当读取完之后要做什么 这个就是回调函数
  10. console.log('代码执行完毕');

代码执行完毕
Abcdefg
非阻塞代码是不需要等待的。