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 相关文章推荐
javascript call方法使用说明
Jan 11 Javascript
JQuery里选择超链接的实现代码
May 22 Javascript
js中通过父级进行查找定位元素
Jun 15 Javascript
浅谈javascript回调函数
Dec 07 Javascript
js+jquery实现图片裁剪功能
Jan 02 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
Mar 02 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
Sep 01 Javascript
html中通过JS获取JSON数据并加载的方法
Nov 30 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
Aug 08 Javascript
vue2.0 + ele的循环表单及验证字段方法
Sep 18 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
Jul 25 Javascript
Vue form表单动态添加组件实战案例
Sep 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
PHP模板引擎SMARTY
2006/10/09 PHP
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
Windows下安装python2和python3多版本教程
2017/03/30 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
python设置表格边框的具体方法
2020/07/17 Python
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
产品工艺师的岗位职责
2013/11/15 职场文书
设计总监岗位职责
2013/12/07 职场文书
学术会议主持词
2014/03/17 职场文书
超市开店计划书
2014/04/26 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
代理词怎么写
2015/05/25 职场文书
长征观后感
2015/06/09 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技