理解 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.');
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP