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 相关文章推荐
lib.utf.js
Aug 21 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
Sep 12 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
Dec 31 Javascript
Jquery全选与反选点击执行一次的解决方案
Aug 14 Javascript
javaScript中的原型解析【推荐】
May 05 Javascript
JS绘制微信小程序画布时钟
Dec 24 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
Sep 13 Javascript
Vue 中的compile操作方法
Feb 26 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
Apr 12 jQuery
基于打包工具Webpack进行项目开发实例
May 29 Javascript
关于引入vue.js 文件的知识点总结
Jan 28 Javascript
react国际化react-intl的使用
May 06 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
linux php mysql数据库备份实现代码
2009/03/10 PHP
PHP 一个页面执行时间类代码
2010/03/05 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
深入浅析JS中的严格模式
2018/06/04 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
Python连接DB2数据库
2016/08/27 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
python pytest进阶之fixture详解
2019/06/27 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
Python 高效编程技巧分享
2020/09/10 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
Python爬虫开发与项目实战
2020/12/16 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
企业为何需要商业计划书
2013/12/26 职场文书
学生实习介绍信
2014/01/15 职场文书
工作决心书
2014/03/11 职场文书
公司开业庆典主持词
2014/03/21 职场文书
大学毕业生推荐信
2014/07/09 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
网吧管理制度范本
2015/08/05 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP
delete in子查询不走索引问题分析
2022/07/07 MySQL