Node.js知識點整理之----基礎知識----事件處理機制及事件環機制

在event模塊中,定義了EventEmitter類,全部觸發事件的對象都是繼承了這個類的子類的實例對象。函數

addListener(event,listener)ui

對指定事件綁定事件處理函數url

 

on(event,listener)spa

對指定事件綁定事件處理函數(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');

參數:code

  • event:指定的事件名
  • listener:事件處理函數

能夠經過多個on方法的執行來對同一個事件綁定多個事件處理函數。server

在默認狀況下,針對同一個指定事件,最多能夠綁定10個事件處理函數對象

once(event,listener)blog

對指定事件指定只執行一次的事件處理函數繼承

 

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中只能使用單線程

在一個應用程序中,須要按照次序處理每一個事件,而線程每次只能處理一個回調函數,這時有新事件須要處理時,程序會轉而處理新的事件,在處理完新事件以後,再回到原來的事件中繼續處理,這就叫事件環機制。

相關文章
相關標籤/搜索