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 相关文章推荐
客户端静态页面玩分页
Jun 26 Javascript
让插入到 innerHTML 中的 script 跑起来的实现代码
Jul 01 Javascript
jquery如何根据值设置默认的选中项
Mar 17 Javascript
javascript设置连续两次点击按钮时间间隔的方法
Oct 28 Javascript
浅谈jQuery中replace()方法
May 13 Javascript
Javascript中的作用域和上下文深入理解
Jul 03 Javascript
极易被忽视的javascript面试题七问七答
Feb 15 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
May 10 Javascript
webpack v4 从dev到prd的方法
Apr 02 Javascript
JS伪继承prototype实现方法示例
Jun 20 Javascript
Vue组件间的通信pubsub-js实现步骤解析
Mar 11 Javascript
webpack3.0升级4.0的方法步骤
Apr 02 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
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
js获取系统的根路径实现介绍
2013/09/08 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
python正则分组的应用
2013/11/10 Python
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python while 循环使用的简单实例
2016/06/08 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
python的pip安装以及使用教程
2018/09/18 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
对公司合理化的建议书
2014/03/12 职场文书
师德师风承诺书
2014/05/23 职场文书
社区护士演讲稿
2014/08/27 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
swagger如何返回map字段注释
2021/07/03 Java/Android