1. 程式人生 > >nodejs之事件處理機制(丟擲事件、監聽事件)

nodejs之事件處理機制(丟擲事件、監聽事件)

程式執行到一定階段的時候會發出一個訊息,對這個訊息進行監聽,作出響應;

==========================================

***************建立伺服器

var http = require('http');
var fs = require('fs');
var url = require('url');
var uesrBean=require('./models/userEvent');//吧userEvent.js中的UserBean引用過來,用一個引數接收


http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/html'});


   var pathname = url.parse(request.url).pathname;
if(pathname!="/favicon.ico"){
  pathname=pathname.replace(/\//,"");// 吧/去掉
  user=new uesrBean();//建立一個物件
  user.eventEmit.once('zhuceS',function(uname,pwd){  //對zhuceS這個事件標識監聽一次,給一個回撥,這裡的回撥中的uname和pwd是被監聽的zhuceS提供 的引數
response.write('註冊成功'); user.login(request,response);//呼叫登陸的方法 response.end(''); }); user.zhuce(request,response);//呼叫zhuce的方法,在zhuce方法中會丟擲一個事件訊息,上面對丟擲的zhuceS事件訊息監聽一次 } }).listen(8000); console.log('Server running at http://127.0.0.1:8000/');

**********************事件***********

var events=require('events');
function UserBean(){
  this.eventEmit=new events.EventEmitter();//例項化時間發生器
  this.zhuce=function(req,res){
    console.log('註冊');
    req['uname']='a';
    req['pwd']='b';
    this.eventEmit.emit('zhuceS','aa','bb');//丟擲事件訊息,zhuceS是事件標識,會被監聽,aa和bb是引數,這裡的引數在監聽的方法中會接收引數
; }; this.login=function(req,res){ console.log('登陸'); res.write(req['uname']); res.write(req['pwd']); res.write('登陸'); }; } module.exports=UserBean;