第 3 章 回调和事件

在同步编程中,我们将代码概念化为解决特定问题的一系列连续计算步骤。 每个操作都是阻塞的,这意味着只有当一个操作完成后,才有可能执行下一个操作。 这种方法使代码非常容易阅读、理解和调试。

另一方面,在异步编程中,某些操作(例如从文件读取或执行网络请求)会启动,然后 “在后台” 执行。 当我们调用异步操作时,即使前一个异步操作尚未完成,后面的指令也会立即执行。 在这种情况下,我们需要一种方法来在异步操作完成时收到通知,然后使用操作结果继续执行流程。 Node.js 中获取异步操作完成通知的最基本机制是回调,它只不过是运行时使用异步操作结果调用的函数。

回调是最基本的构件,所有其他异步机制都基于它。事实上,如果没有回调,我们就不会有 Promise,因此甚至不会有 async/await;我们也不会有流或事件。因此,了解回调的工作原理非常重要。

在本章中,您将了解有关 Node.js 回调模式的更多信息,并了解它在实践中编写异步代码的含义。 我们将通过惯例(conventions)、模式(patterns)和陷阱(pitfalls),到本章结束时,您将掌握回调模式的基础知识。

您还将了解观察者模式,它可以被认为是回调模式的近亲。 观察者模式(由 EventEmitter 体现)使用回调来处理多个异构事件,是 Node.js 编程中使用最广泛的组件之一。

总而言之,这就是您将在本章中学到的内容:

  • 回调模式、它的工作原理、Node.js 中使用的约定以及如何处理最常见的陷阱

  • 观察者模式以及如何使用 EventEmitter 类在 Node.js 中实现它