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 相关文章推荐
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
Jan 12 Javascript
jquery隐藏标签和显示标签的实例
Nov 11 Javascript
jquery简单的弹出层浮动层代码
Apr 27 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
Sep 05 Javascript
JS实现简单易用的手机端浮动窗口显示效果
Sep 07 Javascript
详解a++和++a的区别
Aug 30 Javascript
VSCode配置react开发环境的步骤
Dec 27 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
微信小程序与公众号实现数据互通的方法
Jul 25 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
Sep 18 Javascript
修改Vue打包后的默认文件名操作
Aug 12 Javascript
vant picker+popup 自定义三级联动案例
Nov 04 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
php防盗链的常用方法小结
2010/07/02 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
Prototype Selector对象学习
2009/07/23 Javascript
JQUERY操作JSON实例代码
2010/02/09 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python django 实现验证码的功能实例代码
2017/05/18 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
物流创业计划书
2014/02/01 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
文秘应聘自荐书范文
2014/02/18 职场文书
高中学生干部学习的自我评价
2014/02/21 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers