nodejs的事件处理机制

程序执行到某一个阶段的时候,可以发出某一个消息,对这个消息进行监听,监听我安置后对这个消息作出响应。

/**
 * Events
 * events.EventEmitter
 * emitter.addListener(event,listener)==on //添加监听
 * emitter.on(event,listener)
 * emitter.once(event,listener)//一次性的监听器
 * emitterremoveListener(event,listener)//删除指定监听
 * emitter.removeAllListener([event])//删除所有监听
 * emitter.setMaxListener(n)//默认情况下当一个事件的监听超过10个时,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参数');//抛出事件
 */

UserBean.js

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('zhuceSuc','aa','bb');//抛出事件消息
    },
    this.login=function (req,res){
        console.log('登录');
        res.write('用户名:'+req['uname']);
        res.write('密码:'+req['pwd']);
        res.write('登录');
    }
}

 Events.js

var http = require('http');
var events=require('events');
var UserBean = require('../module/UserBean.js');
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('zhuceSuc',function(uname,pwd){
            response.write('注册成功');
            console.log('传来uname:'+uname);
            console.log('传来pwd:'+pwd);
            user.login(request,response);
            response.end('');
        });//注册监听
        user.zhuce(request,response);
    }

}).listen(8900);
console.log('Server running at http://127.0.0.11:8900/');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值