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 相关文章推荐
网络之美 JavaScript中Get和Set访问器的实现代码
Sep 19 Javascript
2010年最佳jQuery插件整理
Dec 06 Javascript
Egret引擎开发指南之发布项目
Sep 03 Javascript
本人自用的global.js库源码分享
Feb 28 Javascript
最丑的时钟效果!js canvas时钟制作方法
Aug 15 Javascript
js实现表单及时验证功能 用户信息立即验证
Sep 13 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
Oct 13 Javascript
AngularJS实现select的ng-options功能示例
Jul 12 Javascript
详解.vue文件中监听input输入事件(oninput)
Sep 19 Javascript
深入浅析JSONAPI在PHP中的应用
Dec 24 Javascript
vue中实现先请求数据再渲染dom分享
Mar 17 Javascript
node+multer实现图片上传的示例代码
Feb 18 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的开合式多级菜单程序
2006/10/09 PHP
header()函数使用说明
2006/11/23 PHP
php 静态页面中显示动态内容
2009/08/14 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
利用php输出不同的心形图案
2016/04/22 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
php-msf源码详解
2017/12/25 PHP
php array_map()函数实例用法
2021/03/03 PHP
switch语句的妙用(必看篇)
2016/10/03 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
pycharm远程调试openstack的图文教程
2017/11/21 Python
python使用Matplotlib画饼图
2018/09/25 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
Python同时迭代多个序列的方法
2020/07/28 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
用python发送微信消息
2020/12/21 Python
配置管理计划的主要内容有哪些
2014/06/20 面试题
春节活动策划方案
2014/01/24 职场文书
银行批评与自我批评
2014/02/10 职场文书
八项规定整改方案
2014/02/21 职场文书
难忘的一课教学反思
2014/04/30 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
行政处罚告知书
2015/07/01 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
详解Laravel服务容器的优势
2021/05/29 PHP