nodejs事件機制
阿新 • • 發佈:2018-12-14
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;