1. 程式人生 > >nodejs事件機制

nodejs事件機制

var http = require('http');
var events = require('events');
var UserBean = require('./UserBean');

http.createServer(function(request,response){
	response.writeHead(200,{'Contet-Type':'text/html;charset=utf-8'});
	if(request.url!=='/favicon.ico'){
		user = new UserBean();
		user.eventEmit.once('zhucesecc',function(name,pwd){
			response.write('註冊成功');
			console.log('傳來name'+name);
			console.log('傳來pwd'+pwd);
			user.login(request,response);
			response.end('');
		});// 註冊監聽

		// 這裡先執行,成功了,上面once監聽到才執行
		user.zhuce(request,response);
	}


}).listen(8000);
console.log('Server running at http://127.0.0.1:8000');
/*
Events 
	enevts.EventEmitter
	emitter.addListener(event,listener)==on // 新增監聽
	emitter.on(event,listener)
	emitter.once(event,listener)  // 一次性的監聽
	emitter.removeListener(event,listener) // 刪除指定監聽
	emitter.removeAllListeners([event]) // 刪除所有監聽
	emitter.setMaxListeners(n) // 預設情況下當一個事件的監聽超過10小時,EventEmitter將列印警告資訊,0表示無限制
	emitter.listeners(evebt) // 返回特定事件的事件監聽器集合
	emitter.emit(event,[arg1],[arg2],[...]) // 用提供的引數按順序執行每個事件監聽器
*/
var events = require('events');
var http = require('http');
function UserBean(){
	// 例項化事件發生器
	this.eventEmit = new events.EventEmitter();
	this.zhuce =function(req,res){
		console.log('註冊');
		req['name'] = 'aa';
		req['pwd'] = '123456';
		// 事件發生器的發生事件
		this.eventEmit.emit('zhucesecc','aa','123456');
	},
	this.login=function(req,res){
		console.log('登入');
		res.write('使用者名稱:'+req['name']);
		res.write('密碼:'+req['pwd']);
		res.write('登入');
	}

}
module.exports = UserBean;