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 相关文章推荐
use jscript with List Proxy Server Information
Jun 11 Javascript
js中事件的处理与浏览器对象示例介绍
Nov 29 Javascript
js sort 二维数组排序的用法小结
Jan 24 Javascript
js防止DIV布局滚动时闪动的解决方法
Oct 30 Javascript
Javascript原型链的原理详解
Jan 05 Javascript
javascript创建对象、对象继承的实用方式详解
Mar 08 Javascript
Ajax的概述与实现过程
Nov 18 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
Apr 13 Javascript
Less 安装及基本用法
May 05 Javascript
微信小程序滑动选择器的实现代码
Aug 10 Javascript
性能优化篇之Webpack构建速度优化的建议
Apr 03 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
Nov 05 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数组删除元素示例
2014/03/21 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
javascript知识点收藏
2007/02/22 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
完美解决js传递参数中加号和&号自动改变的方法
2016/10/11 Javascript
webpack+react+antd脚手架优化的方法
2018/04/02 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
JavaScript学习笔记之DOM基础操作实例小结
2019/01/09 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
Python3实现连接SQLite数据库的方法
2014/08/23 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
基于python实现高速视频传输程序
2019/05/05 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
PyQt QMainWindow的使用示例
2021/03/24 Python
公司会计主管岗位责任制
2014/03/01 职场文书
2014年平安夜寄语
2014/12/08 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android