Node.js的事件循环
来源:互联网 发布:电机压面机淘宝 编辑:程序博客网 时间:2024/04/29 08:33
Node.js的事件机制
Node.js是单进程单线程应用程序,但是痛过事件和回电支持并发。
Node.js的每一个API都是一步的,并作为一个独立的线程运行,使用一步异步函数回调,并处理。
Node.js 基本上所有的事件机制都是用设计模式中的观察者模式实现的
Node.js 当线程类似进入一个while的事件循环,直到没有事件观察者推出,妹进入异步事件都会生成一个观察者,如果有事件发生就调用该函数
事件驱动程序 ##
事件驱动程序的主要参与者有两个EventEmitters对象和EventHandlers(回调函数)。
我们设置一个事件,主要通过以下流程
1.引入events模块 ,实例化EventEmitter类来绑定和监听事件
//引入events模块var events = require('events');//创建eventEmitter对象var eventEmitter = new events.EventEmitter();
2.绑定事件处理程序(函数),绑定函数有两种方式,一种直接绑定已知的函数名,一种是绑定匿名函数
//创建事件处理函数var connectHandler = function connected(){ console.log('连接成功');}//绑定connectHandler到connection事件上eventEmitter.on('connection',connectHandler);//使用匿名函数绑定data_received事件eventEmitter.on('data_received',function(){ console.log('数据接收成功。');})
3.通过EventEmitter.emit函数来触发事件,回调函数
//触发上面绑定的connection事件eventEmitter.emit('connection');//触发上面绑定匿名函数的data_received事件eventEmitter.emit('data_received');
详细代码如下:
// 引入 events 模块var events = require('events');// 创建 eventEmitter 对象var eventEmitter = new events.EventEmitter();// 创建事件处理程序var connectHandler = function connected() { console.log('连接成功。'); // 触发 data_received 事件 eventEmitter.emit('data_received');}// 绑定 connection 事件处理程序eventEmitter.on('connection', connectHandler);// 使用匿名函数绑定 data_received 事件eventEmitter.on('data_received', function(){ console.log('数据接收成功。');});// 触发 connection 事件 eventEmitter.emit('connection');console.log("程序执行完毕。");
Node执行异步操作
Node里面我们经常会使用内置的异步回调操作,回调函数接收错误对象作为第一个参数。如下面代码的err就是错误信息作为参数
var fs = require("fs");fs.readFile('input.txt', function (err, data) { if (err){ console.log(err.stack); return; } console.log(data.toString());});console.log("程序执行完毕");
如果读取文件过程发生错误,错误err对象就会输出错误信息,如果没有发生错误,readFile跳过err对象,文件内容会通过回调函数的参数data输出。
0 0
- Node.js的事件循环
- Node.js事件循环
- Node.js 事件循环
- Node.js事件循环
- Node.js 事件循环
- node.js事件循环
- Node.js 事件循环
- Node.js 事件循环
- Node.js 事件循环
- [Node.js]事件循环
- [Node.js]事件循环
- node.js事件循环
- node.js 事件循环
- 理解Node.js的事件循环
- 理解Node.js的事件循环
- 理解 node.js 的事件循环
- node.js事件循环,事件驱动程序。
- Node.js的回调函数以及事件循环
- ios开发--证书显示 此证书签发者无效 解决办法
- ExtJS获取父子、兄弟容器元素方法
- 详解Android App AllowBackup配置带来的风险
- 小Printf的编程故事:第三章
- Net后台+ html + Jquery不得不写的一些小功能和格式
- Node.js的事件循环
- 广播—安装与卸载应用
- Android开发CompoundButton抽象类控件类的使用UI之Radio、Check、Toggle
- scala------包和引入
- Android中图片处理库Picasso的基本使用
- 解决a different object with the same identifier value was already associated with the session错
- 关于职业的思考
- 一张图读懂java多线程
- LabVIEW 2016下载 15.0 64位版