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 相关文章推荐
在IE下:float属性会影响offsetTop的取值
Dec 22 Javascript
如何用javascript判断录入的日期是否合法
Jan 08 Javascript
根据json字符串生成Html的一种方式
Jan 09 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
Feb 21 Javascript
Javascript中浮点数相乘的一个解决方法
Jun 03 Javascript
Javascript之BOM(window对象)详解
May 25 Javascript
Vue.js每天必学之数据双向绑定
Sep 05 Javascript
让编辑器支持word复制黏贴、截屏的js代码
Oct 17 Javascript
微信小程序 slider 详解及实例代码
Jan 10 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
Feb 22 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
Sep 26 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
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
example1.php
2006/10/09 PHP
也谈 PHP 和 MYSQL
2006/10/09 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
php生成mysql的数据字典
2016/07/07 PHP
PHP经典算法集锦【经典收藏】
2016/09/14 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
广告显示判断
2006/08/31 Javascript
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
loading动画特效小结
2017/01/22 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
多个应用共存的Django配置方法
2018/05/30 Python
浅谈Python中的bs4基础
2018/10/21 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
浅谈pytorch池化maxpool2D注意事项
2020/02/18 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
Allen Edmonds官方网站:一家美国优质男士鞋类及配饰制造商
2019/03/12 全球购物
机关作风建设自查报告
2014/10/22 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
使用Pytorch训练two-head网络的操作
2021/05/28 Python
关于python类SortedList详解
2021/09/04 Python