Node.js知識點整理之----基礎知識----事件處理機制及事件環機制
在event模塊中,定義了EventEmitter類,所有觸發事件的對象都是繼承了這個類的子類的實例對象。
addListener(event,listener)
對指定事件綁定事件處理函數
on(event,listener)
對指定事件綁定事件處理函數(addListener方法的別名)
var http = require(‘http‘); var server = http.createServer(); server.on(‘request‘,function(req,res){ console.log(req,url); res.end(); }) server.listen(1337,‘127.0.0.1‘);
參數:
- event:指定的事件名
- listener:事件處理函數
可以通過多個on方法的執行來對同一個事件綁定多個事件處理函數。
在默認情況下,針對同一個指定事件,最多可以綁定10個事件處理函數
once(event,listener)
對指定事件指定只執行一次的事件處理函數
removeListener(event,listener)
對指定事件解除事件處理函數
removeAllListeners([event])
對指定事件解除所有事件處理函數
setMaxListeners(n)
指定事件處理函數的最大數量。n為整數
listeners(event)
獲取指定事件的所有事件處理函數
emit(event,[arg1],[arg2],[...])
手工觸發指定事件
var http = require(‘http‘); var server = http.createServer(); server.on(‘custimEvent‘,function(arg1,arg2,arg3){ console.log(‘自定義事件被觸發‘); console.log(arg1); console.log(arg2); console.log(arg3); }) server.emit(‘customEvent‘,‘自定義參數1‘,‘‘自定義參數2‘‘,‘‘自定義參數3‘) server.listen(1337,‘127.0.0.1‘);
listenerCount(emitter,event)
獲取某個對象的指定事件的事件處理函數的數量。
var http = require(‘http‘); var server = http.createServer(); var events = require(‘events‘); server.on(‘request‘,function(req,res){ //... }) server.on(‘request‘,function(req,res){ //... }) server.on(‘request‘,function(req,res){ //... }) server.listen(1337,‘127.0.0.1‘); console.log(events.EvevntEmitter.listenerCount(server,‘‘request));
EventEmitter類自身所擁有的事件
newListener事件:當對象綁定事件處理函數時,都將觸發此事件
removeListener事件:當對象取消事件處理函數時,都將觸發此事件
事件環機制
在一個時刻只能執行一個回調函數,因為在JavaScript中只能使用單線程
在一個應用程序中,需要按照次序處理每個事件,而線程每次只能處理一個回調函數,這時有新事件需要處理時,程序會轉而處理新的事件,在處理完新事件之後,再回到原來的事件中繼續處理,這就叫事件環機制。
Node.js知識點整理之----基礎知識----事件處理機制及事件環機制