1. 程式人生 > >Node.js知識點整理之----基礎知識----事件處理機制及事件環機制

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

node 應用程序 nod eat 回調函數 clas 對象 繼續 知識

在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知識點整理之----基礎知識----事件處理機制及事件環機制