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第一课
Feb 27 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
Nov 26 Javascript
javascript自执行函数之伪命名空间封装法
Dec 25 Javascript
了不起的node.js读书笔记之mongodb数据库交互
Dec 22 Javascript
JavaScript学习笔记之数组求和方法
Mar 23 Javascript
jQuery Ajax File Upload实例源码
Dec 12 Javascript
关于iframe跨域POST提交的方法示例
Jan 15 Javascript
BootStrap Fileinput上传插件使用实例代码
Jul 28 Javascript
浅谈关于.vue文件中style的scoped属性
Aug 19 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
Feb 11 Javascript
基于canvasJS在PHP中制作动态图表
May 30 Javascript
Element-UI 使用el-row 分栏布局的教程
Oct 26 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/11/19 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
PHP数组函数知识汇总
2016/05/12 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
给js文件传参数(详解)
2014/07/13 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
深入了解JS之作用域和闭包
2020/06/16 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
Linux下编译安装MySQL-Python教程
2015/02/02 Python
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
快速了解Python相对导入
2018/01/12 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
最好的商品表达自己:Cafepress
2019/09/04 全球购物
大学生实习证明范文(5篇)
2014/09/18 职场文书
丽江古城导游词
2015/02/03 职场文书
呼兰河传读书笔记
2015/06/30 职场文书