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 相关文章推荐
js 自定义的联动下拉框
Feb 07 Javascript
Jquery 选中表格一列并对表格排序实现原理
Dec 15 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
Apr 24 Javascript
js实现两个值相加alert出来精确到指定位
Sep 25 Javascript
JavaScript实现数组随机排序的方法
Jun 26 Javascript
AngularJs实现分页功能不带省略号的代码
May 30 Javascript
浅析JS中回调函数及用法
Jul 25 Javascript
vue升级之路之vue-router的使用教程
Aug 14 Javascript
vuex分模块后,实现获取state的值
Jul 26 Javascript
Js图片点击切换轮播实现代码
Jul 27 Javascript
JavaScript嵌入百度地图API的最详细方法
Apr 16 Javascript
如何开发一个渐进式Web应用程序PWA
May 10 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 Array交叉表实现代码
2010/08/05 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
smarty缓存用法分析
2014/12/16 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
wxPython窗口中文乱码解决方法
2014/10/11 Python
举例讲解Python中is和id的用法
2015/04/03 Python
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
毕业生的自我评价范文
2013/12/31 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
家长学校实施方案
2014/03/15 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
目标责任书范本
2014/04/16 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
圣诞晚会主持词
2015/07/01 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python