回调函数是一种异步函数的等价形式。它在每个任务完成时被调用。在 Node.js 中,回调函数通常被广泛使用。所有的 Node API 都被设计为支持回调函数。例如:当一个函数开始读取文件时,它会立即将控制权返回给执行环境,以便可以执行下一条指令。

在 Node.js 中,一旦文件 I/O 完成,它会调用回调函数。因此,没有阻塞或等待文件 I/O。这使得 Node.js 高度可扩展,可以在不等待任何函数返回结果的情况下处理大量请求。

阻塞代码示例

按照以下步骤操作:

  1. 创建一个名为 input.txt 的文本文件,内容如下:
Javatiku is an online platform providing self-learning tutorials on
different technologies, in a very simple language.
  1. 创建一个名为 main.js 的 JavaScript 文件,代码如下:
var fs = require("fs"); 
var data = fs.readFileSync('input.txt'); 
console.log(data.toString()); 
console.log("Program Ended");
  1. 在 Node.js 命令提示符中执行以下代码:
node main.js

非阻塞代码示例

按照以下步骤操作:

  1. 创建一个名为 input.txt 的文本文件,内容如下:
Javatiku is an online platform providing self-learning tutorials on
different technologies, in a very simple language.
  1. 创建一个名为 main.js 的 JavaScript 文件,代码如下:
var fs = require("fs"); 

fs.readFile('input.txt', function (err, data) { 
  if (err) return console.error(err); 
  console.log(data.toString()); 
}); 

console.log("Program Ended");
  1. 在 Node.js 命令提示符中执行以下代码:
node main.js

从上面的两个示例可以看出,它们解释了阻塞和非阻塞调用的概念。第一个示例显示程序在读取文件之前会阻塞,然后才会继续执行并结束程序;而第二个示例中,程序在读取文件时不会等待,而是直接打印 "Program Ended",同时程序在不阻塞的情况下继续读取文件。

因此,我们可以说,阻塞程序按顺序执行,从编程角度来看,在阻塞程序中实现逻辑也更容易。但非阻塞程序不会按顺序执行,所以如果一个程序需要使用某些数据进行处理,它应该在同一个块内保持以保证顺序执行。

标签: Nodejs, Nodejs安装教程, Nodejs教程, node, nodejs入门, nodejs入门教程, nodejs进阶, nodejs学习教程, nodejs开发, nodejs指南, nodejs学习指南, nodejs环境配置, nodejs框架