Node.js入门到精通(8)事件循环
2016-12-23 12:02
281 查看
Node.js 事件循环
Node.js所有的异步I/O操作在完成时都会发送一个事件到事件队列。在开发者看来,事件由EventEmitter对象提供。Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下实例:// event.js // 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter(); // 创建事件处理程序 var connectHandler = function connected() { console.log('connected...'); // 触发 data_received 事件 eventEmitter.emit('data_received'); } // 绑定 connection 事件处理程序 eventEmitter.on('connection', connectHandler); // 使用匿名函数绑定 data_received 事件 eventEmitter.on('data_received', function(){ console.log('date received...'); }); // 触发 connection 事件 eventEmitter.emit('connection'); console.log("completed...");
运行结果:
Node.js的事件循环机制
Node.js 是单线程应用程序,通过事件和回调支持并发,性能非常高。每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。Node.js单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数。
Node.js在什么时候会进入事件循环呢?答案是Node.js程序由事件循环开始,到事件循环结束,所有的逻辑都是事件的回调函数,所以Node.js始终在事件循环中,程序入口就是事件循环第一个事件的回调函数。事件的回调函数在执行的过程中,可能会发出I/O请求或直接发射( emit)事件,执行完毕后再返回事件循环,事件循环会检查事件队列中有没有未处理的事件,直到程序结束。
相关文章推荐
- node.js入门 - 5.事件循环机制(event loop)
- Node.js入门:事件机制
- 我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
- 深入浅析Node.js 事件循环
- 创业笔记-Node.js入门之基于事件驱动的回调
- Node.js事件循环
- Node.js入门:事件机制
- Node.js事件循环
- 深入浅析Node.js 事件循环
- Node.js 的异步机制由事件和回调函数——循环中的回调函数
- Node.js事件循环
- 我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
- Node.js事件循环(Event Loop)和线程池详解
- Node.js非阻塞IO和事件循环学习总结
- Node.js 事件循环
- Node.js开发指南——第3章安装Node.js快速入门(三) 事件
- 我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
- 小结Node.js中非阻塞IO和事件循环
- Node.js事件循环(Event Loop)和线程池详解
- node.js入门(二) 模块 事件驱动