38 Nodejs 事件处理 events

events.EventEmitter 基本语法
emitter.addListener(event, listener) //添加监听
emitter.on(event, listener) //添加监听
emitter.once(event, listener) //一次性监听器,利于节省资源
//addListener / on / once 用法相当

emitter.removeListener(event, listener) //删除指定监听
emitter.removeAllListeners(event, listener) //删除所有监听  <br/>
emitter.setMaxListener(n) //事件监听超10h时(默认),EventEmitter打印警告信息;0表示无限制
emitter.listeners(event) //监听指定事件
emitter.emit(event, [arg1], [arg2], [...]) //指定参数按序执行每个事件

emitter.on('someEvent', function(arg1, arg2){
	console.log('listener2', arg1, arg2);
});
emitter.emit('someEvent', 'arg1', 'arg2') //抛出事件
事件处理文件 userSign.js
// d38_userSign.js
var events=require('events');
function userSign(){
	this.eventEmit=new events.EventEmitter();
	this.sign=function(req, res){
		console.log('注册');
		req['uname']='aa';
		req['pwd']='bb';
		this.eventEmit.emit('signOK','aa','bb');//抛出事件消息
	},
	this.login=function(req, res){
		console.log('登录');
		res.write('userName:'+req['uname']);
		res.write('password:'+req['pwd']);
		res.write('登录');
	}
}
module.exports=userSign;

注: 本示例代码: this.eventEmit.emit(‘signOK’,‘aa’,‘bb’); 可以 this.login(); 即嵌套方式替代,效果相同;
但嵌套方式增加单任务工作量,降低运行效率; 且不利于后期维护;

事件调用文件 event.js
// d38_event.js
var http=require('http');
var events=require('events');
var userSign=require('./d38_userSign.js');
http.createServer(function(request, response){
	response.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
	if(request.url!=='/favicon.ico'){ //清除2次访问
		user=new userSign();
		user.eventEmit.once('signOK', function(uname, pwd){
			response.write('注册成功');
			console.log('传来uname:'+uname);
			console.log('传来pwd:'+pwd);
			user.login(request, response);
			response.end('');
		});	// 注册监听
		user.sign(request, response);
    }
}).listen(8000); //监听端口
console.log('Server running at http://127.0.0.1:8000/');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值