理解 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.');
广告