背景

编写通过网络通信的系统时,一个更困难的问题是管理输入输出,即向/从网络和硬盘读写数据。到处移动数据会耗费时间,而调度这些任务的技巧会使得系统在相应用户或网络请求时产生巨大的性能差异。

在这样的程序中,异步编程通常是有帮助的。 它允许程序同时向/从多个设备发送和接收数据,而无需复杂的线程管理和同步。

Node最初是为了使异步编程简单方便而设计的。 JavaScript 很好地适应了像 Node 这样的系统。 它是少数几种没有内置输入和输出方式的编程语言之一。 因此,JavaScript 可以适应 Node 的相当古怪的输入和输出方法,而不会产生两个不一致的接口。 在 2009 年设计 Node 时,人们已经在浏览器中进行基于回调的编程,所以该语言的社区用于异步编程风格。