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调用WebService的实现代码
Jun 19 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
Apr 02 Javascript
js作用域及作用域链概念理解及使用
Apr 15 Javascript
js对象继承之原型链继承实例
Jan 10 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
Aug 04 Javascript
Vue.js双向绑定操作技巧(初级入门)
Dec 27 Javascript
利用transition实现文字上下抖动的效果
Jan 21 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
Jun 19 Javascript
搭建vue开发环境
Jul 19 Javascript
JavaScript使用ul中li标签实现删除效果
Apr 15 Javascript
解析原来浏览器原生支持JS Base64编码解码
Aug 12 Javascript
解决vant中 tab栏遇到的坑 van-tabs
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
JAVA/JSP学习系列之四
2006/10/09 PHP
PHP获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
PHP 学习路线与时间表
2010/02/21 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
js tab 选项卡
2009/04/26 Javascript
JavaScript浏览器选项卡效果
2010/08/25 Javascript
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
python中entry用法讲解
2020/12/04 Python
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
保洁主管岗位职责
2013/11/20 职场文书
后勤人员岗位职责
2013/12/17 职场文书
电子商务专业个人的自我评价
2013/12/19 职场文书
2014三八妇女节活动总结
2014/03/01 职场文书
2014两会学习心得:时代的发展
2014/03/17 职场文书
利群广告词
2014/03/20 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
Python趣味挑战之给幼儿园弟弟生成1000道算术题
2021/05/28 Python