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 动态扩展对象之另类视角
May 25 Javascript
JQuery小知识
Oct 15 Javascript
基于KMP算法JavaScript的实现方法分析
May 03 Javascript
javascript基本算法汇总
Mar 09 Javascript
JavaScript制作简单的日历效果
Mar 10 Javascript
js仿3366小游戏选字游戏
Apr 14 Javascript
vue.js学习笔记:如何加载本地json文件
Jan 17 Javascript
JS跨域请求外部服务器的资源
Feb 06 Javascript
js正则取值的结果数组调试方法
Oct 10 Javascript
JS异步执行结果获取的3种解决方式
Feb 19 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
Feb 20 Javascript
vue开发拖拽进度条滑动组件
Sep 21 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批量检测并去除文件BOM头代码实例
2014/05/08 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
vue接口请求加密实例
2020/08/11 Javascript
Flexible.js可伸缩布局实现方法详解
2020/11/13 Javascript
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
Python IDLE清空窗口的实例
2018/06/25 Python
Python3 log10()函数简单用法
2019/02/19 Python
Django框架反向解析操作详解
2019/11/28 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
兼职学生的自我评价
2013/11/24 职场文书
英语简历自我评价
2014/01/26 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
医院员工辞职信范文
2015/05/12 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
管辖权异议上诉状
2015/05/23 职场文书