Node.js  事件循环详解及实例


Posted in Javascript onAugust 06, 2017

 Node.js  事件循环详解及实例

  • Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。
  • Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。
  • Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。
  • Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数.

Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下实例:

// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();

// 创建事件处理程序
var connectHandler = function connected() {
  console.log(1);

  // 触发 data_received 事件 
  eventEmitter.emit('data_received');
}

// 绑定 connection 事件处理程序
eventEmitter.on('connection', connectHandler);

// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', function(){
  console.log(2);
});

// 触发 connection 事件 
eventEmitter.emit('connection');

console.log(3);

在 Node 应用程序中,执行异步操作的函数将回调函数作为最后一个参数, 回调函数接收错误对象作为第一个参数。

var fs = require("fs")
fs.readFile('input.txt',function(err,data){
if(err)
  console.log(err)
else
  console.log(data.toString())
})
console.log("程序执行完成")

如有疑问,请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
onpropertypchange
Jul 01 Javascript
JS setCapture 区域外事件捕捉
Mar 18 Javascript
ExtJs纵坐标值重复问题的解决方法
Feb 27 Javascript
jQuery中prev()方法用法实例
Jan 08 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
Mar 04 Javascript
javascript事件冒泡实例分析
May 13 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
Apr 01 Javascript
Bootstrap 组件之按钮(二)
May 11 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
Feb 23 Javascript
vue自定义指令实现方法详解
Feb 11 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
Apr 19 Javascript
vue中的v-if和v-show的区别详解
Sep 01 Javascript
Angularjs上传图片实例详解
Aug 06 #Javascript
微信小程序 自定义消息提示框
Aug 06 #Javascript
最通俗易懂的javascript变量提升详解
Aug 05 #Javascript
Vue2.0 vue-source jsonp 跨域请求
Aug 04 #Javascript
js分页之前端代码实现和请求处理
Aug 04 #Javascript
微信小程序 rich-text的使用方法
Aug 04 #Javascript
Easyui和zTree两种方式分别实现树形下拉框
Aug 04 #Javascript
You might like
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
php木马webshell扫描器代码
2012/01/25 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
javascript中万恶的function实例分析
2011/05/25 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
使用Pyrex来扩展和加速Python程序的教程
2015/04/13 Python
python中input()与raw_input()的区别分析
2016/02/27 Python
理解python中生成器用法
2017/12/20 Python
用python实现百度翻译的示例代码
2018/03/09 Python
django中模板的html自动转意方法
2018/05/27 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
培训演讲稿范文
2014/01/12 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书