nodejs 事件机制
setTimeout(myFunc,1000);
var myTimeout=setTimeout(myFunc,1000);
...
clearTimeOut(myTimeout);
var myInterval=setInterval(myFunc,1000);
...
clearInterval(myInterval);
var myImmediate=setImmediate(myFunc,1000);
...
clearImmediate(myImmediate);
二 事件发射器和监听器
var EventEmitter = require('events').EventEmitter; // 引入事件模块
var event = new EventEmitter(); // 实例化事件模块
// 注册事件(customer_event)
event.on('customer_event', function() {
console.log('customer_event has be occured : ' + new Date());
});
setInterval(function() {
event.emit('customer_event'); // 发射(触发)事件
}, 500);
var EventEmitter = require('events').EventEmitter; // 引入事件模块
var event = new EventEmitter(); // 实例化事件模块
// 注册事件(sayHello)
event.on('sayHello', function(param1, param2) {
console.log('Hello1 : ', param1, param2);
});
// 再次注册事件(sayHello)
event.on('sayHello', function(param1, param2) {
console.log('Hello2 : ', param1, param2);
});
event.emit('sayHello', 'GuYing', '1996'); // 发射(触发)事件(sayHello)
var events=require('events');
var http=require('http');
function UserBean(){
//实例化事件模型
this.eventEmit=new events.EventEmitter();
this.zhuce=function(req,res){
console.log('注册');
req['uname']='aa';
req['pwd']='bb';
//触发事件
this.eventEmit.emit('zhuceSuccess','aa','bb');
},
this.login=function(req,res){
console.log('登录');
res.write('用户名:'+req['uname']);
res.write('密码:'+req['pwd']);
res.write("登录");
}
}
module.exports=UserBean;
var http=require('http');
var UserBean=require('./UserBean');
http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
if(request.url!=='favicon.ico'){
user=new UserBean();
user.eventEmit.once('zhuceSuccess',function(uname,pwd){
response.write('注册成功');
console.log('传uname '+uname);
console.log('传pwd '+pwd);
user.login(request,response);
response.end();
});
user.zhuce(request,response);
}
}).listen(8000);
console.log('server running at http://127.0.0.1:8000/');


var events=require('events');
var myEvent = new events.EventEmitter();
myEvent.emit('error', new Error('whoops!'));
var events=require('events');
myEvent.on('error', (err) => {
console.log('whoops! there was an error');
});
myEvent.emit('error', new Error('whoops!'));

function myObj(){
Events.EventEmitter.call(this);
}
myObj.prototype._proto_=evnets.EventEmitter.prototype;
var newObj=new myObj();
newObj.emit('someEvent');
var events = require('events');
function Account() {
this.balance = 0;
events.EventEmitter.call(this);
this.deposit = function(amount){
this.balance += amount;
this.emit('balanceChanged');
};
this.withdraw = function(amount){
this.balance -= amount;
this.emit('balanceChanged');
};
}
Account.prototype.__proto__ = events.EventEmitter.prototype;
function displayBalance(){
console.log("Account balance: $%d", this.balance);
}
function checkOverdraw(){
if (this.balance < 0){
console.log("Account overdrawn!!!");
}
}
function checkGoal(acc, goal){
if (acc.balance > goal){
console.log("Goal Achieved!!!");
}
}
var account = new Account();
account.on("balanceChanged", displayBalance);
account.on("balanceChanged", checkOverdraw);
account.on("balanceChanged", function(){
checkGoal(this, 1000);
});
account.deposit(220);
account.deposit(320);
account.deposit(600);
account.withdraw(1200);
nodejs 事件机制的更多相关文章
- nodejs事件机制
var EventEmitter = function() { this.evts = {}; }; EventEmitter.prototype = { constructor: EventEmit ...
- EventEmitter:nodeJs事件触发机制
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列 Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs.r ...
- 12.nodejs事件轮询机制
一:nodejs事件轮询机制 就是 函数的执行顺序 <script type="text/javascript"> setImmediate(function(){ ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- nodeJS中的事件机制
events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如http.fs等.本文将详细介绍nodeJS中的事件机制 EventEmitter 多数 Node.js ...
- Node.js入门:事件机制
Evented I/O for V8 JavaScript 基于V8引擎实现的事件驱动IO. 事件机制的实现 Node.js中大部分的模块,都继承自Event模块(http://n ...
- 【iScroll源码学习03】iScroll事件机制与滚动条的实现
前言 想不到又到周末了,周末的时间要抓紧学习才行,前几天我们学习了iScroll几点基础知识: 1. [iScroll源码学习02]分解iScroll三个核心事件点 2. [iScroll源码学习01 ...
- nodejs事件的监听与事件的触发
nodejs事件(Events) 一.事件机制的实现 Node.js中大部分的模块,都继承自Event模块(http://nodejs.org/docs/latest/api/events.html ...
- nodejs运行机制
有一天老大忽然问起我这个问题,nodejs运行机制 是怎样的?因自己对nodejs也不是很熟悉,就上网查了一下,得出结果如下: 1.简介 Node.js是一个事件驱动I/O服务端JavaScript环 ...
随机推荐
- 【[ZJOI2006]物流运输】
一直不会做,觉得这是一道神题 于是万般无奈下去借鉴抄了一下题解 发现这就是一道套路题 我们用\(dp[i]\)表示前\(i\)天的最小总花费,于是我们就可以用一个常规的老套路来做了 那就是枚举断点 我 ...
- 命令行参数技巧:__argc,__argv
几个可以使用的全局变量: _CRTIMP extern int __argc; /* count of cmd line args */ _CRTIMP extern char ** __argv; ...
- MVC学习十:MVC 特性作用和MVC 验证
根据代码分析特性用处 [DisplayName("学员名")] [DataType(DataType.Text)] [StringLength(,ErrorMessage=&quo ...
- HDU 2086 P - A1 = ?(推表达式)
传送门:http://acm.geekxiong.tech/vjudge/contest/view.action?cid=14#problem/P P - A1 = ? Time Limit:1000 ...
- HDU 1018Big Number(大数的阶乘的位数,利用公式)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1018 Big Number Time Limit: 2000/1000 MS (Java/Others) ...
- Spring - 父容器与子容器
一.Spring容器(父容器) 1.Mapper代理对象 2.Service对象 二.Springmvc(前端控制器)(子容器) Controller对象 1.标准的配置是这样的:Con ...
- 一、hadoop 及 hadoop的环境搭建
一.Hadoop引言 Hadoop是在2006年雅虎从Nutch(给予Java爬虫框架)工程中剥离一套分布式的解决方案.该方案参考了Goggle的GFS(Google File System)和Map ...
- Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.
刚刚在一台Linux服务器上安装了jdk和Tomcat,然后部署了一个web项目,在项目中有个添加图片的功能,保存图片时报错 org.springframework.web.util.NestedSe ...
- 【js】深拷贝和浅拷贝区别,以及实现深拷贝的方式
一.区别:简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,如果B没变,那就是深拷贝. 此篇文章中也会简单阐述到栈堆,基本数据类型与引用数据类型,因为这 ...
- 2018 CVTE 前端校招笔试题整理
昨天晚上(7.20)做了CVTE的前端笔试,总共三十道题,28道多选题,2道编程题 .做完了之后觉得自己基础还是不够扎实,故在此整理出答案,让自己能从中得到收获,同时给日后的同学一些参考. 首先说一下 ...