Node.js Callbacks

2024 年 8 月 29 日 | 阅读 2 分钟

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

在 Node.js 中,一旦文件 I/O 完成,它将调用回调函数。因此,不会出现阻塞或等待文件 I/O 的情况。这使得 Node.js 具有高度可伸缩性,因为它可以处理大量的请求而无需等待任何函数返回结果。

阻塞代码示例

按照以下步骤

  1. 创建一个名为 input.txt 的文本文件,其内容如下:
  2. 创建一个名为 main.js 的 JavaScript 文件,其代码如下:
  3. 打开 Node.js 命令提示符并执行以下代码。
Node.js callbacks 1

非阻塞代码示例

按照以下步骤

  1. 创建一个名为 input.txt 的文本文件,其内容如下:
  2. 创建一个名为 main.js 的 JavaScript 文件,其代码如下:
  3. 打开 Node.js 命令提示符并执行以下代码。
Node.js callbacks 2

您可以看到,上面两个示例解释了阻塞和非阻塞调用的概念。第一个示例显示程序在读取文件之前会一直阻塞,然后才继续结束程序;另一方面,在第二个示例中,程序不等待文件读取,而是直接打印“程序结束”,同时程序在不阻塞的情况下继续读取文件。

因此我们可以说,阻塞程序按顺序执行。从编程角度来看,在阻塞程序中实现逻辑也更容易。但非阻塞程序不按顺序执行,因此如果程序需要使用任何要处理的数据,则应将其保存在同一块中以使其按顺序执行。

下一主题Node.js 事件