理解 Node.js 中的节点生命周期和事件循环


Node.js 中的简单 http 服务器将注册一个事件循环,该循环将持续监听 http 请求。

包含服务器创建代码的文件的执行过程如下所示:

node App.js => 开始执行脚本 => 代码解析,注册事件和函数 => 事件循环 => 只要注册了事件,就一直运行。

这是 Node.js 的单线程事件驱动方法。访问和更新数据库中的值也使用事件驱动方法。即使它是单线程的,由于其处理速度快,它也可以同时处理多个请求。

示例:

const server = http.createServer( (req, res)=>{ console.log(‘hello’); } );

在上面的示例代码中,createServer 方法将请求监听器作为参数,这是一个事件。此事件将持续监听指定端口上的 http 请求。

如何退出事件循环

process.exit() 是停止事件循环的函数。

App.js

const http = require(‘http’);
const server = http.createServer( (req, res)=>{ console.log(‘hello’); process.exit(); } );
server.listen(3000);

现在,一旦我们使用终端中的 **node App.js** 运行 App.js 文件,事件循环就会开始。事件循环将在收到第一个 http 请求时停止。这可以通过打开浏览器并导航到 localhost:3000 进行检查,并在终端中查看控制台日志。它将打印 hello 消息并停止事件循环。

process.exit() 很少使用,因为我们总是希望事件循环保持运行以监听 http 请求或数据库连接。它只能根据特定需求使用。

如果我们只需要通过停止节点进程来退出终端,我们可以在终端中使用 ctrl + c 来停止节点进程。

事件循环遵循 **非阻塞** 代码执行。

简单的事件发射器示例

// import the core module events from node.js
const events = require('events');
//create an object of EventEmitter class by using above reference
var em = new events.EventEmitter();
//Subscribe for FirstEvent
em.on('TutorialsPointEvent', function (data) {
   console.log(' Hello Tutorials point Event': ' + data);
});
// Raising FirstEvent
em.emit(' TutorialsPointEvent', 'This is my first Simple Node.js event emitter example on TutorialsPoint.');

更新于: 2020年5月13日

1K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告