中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于Node.js的events.EventEmitter用法介紹

發布時間:2020-09-21 19:25:08 來源:腳本之家 閱讀:156 作者:wuxy720 欄目:web開發

Node.js 所有的異步 I/O 操作在完成時都會發送一個事件到事件隊列。

Node.js里面的許多對象都會分發事件:一個net.Server對象會在每次有新連接時分發一個事件, 一個fs.readStream對象會在文件被打開的時候發出一個事件。 所有這些產生事件的對象都是 events.EventEmitter 的實例。
EventEmitter 類

events 模塊只提供了一個對象: events.EventEmitter。EventEmitter 的核心就是事件觸發與事件監聽器功能的封裝。

你可以通過require(“events”);來訪問該模塊。

// 引入 events 模塊 
var events = require('events'); 
// 創建 eventEmitter 對象 
var eventEmitter = new events.EventEmitter(); 

EventEmitter 對象如果在實例化時發生錯誤,會觸發 ‘error' 事件。當添加新的監聽器時,'newListener' 事件會觸發,當監聽器被移除時,'removeListener' 事件被觸發。

下面我們用一個簡單的例子說明 EventEmitter 的用法:

//event.js 文件 
var EventEmitter = require('events').EventEmitter;  
var event = new EventEmitter();  
event.on('some_event', function() {  
  console.log('some_event 事件觸發');  
});  
setTimeout(function() {  
  event.emit('some_event');  
}, 1000);  

執行結果如下:

運行這段代碼,1 秒后控制臺輸出了 ‘some_event 事件觸發'。其原理是 event 對象注冊了事件 some_event 的一個監聽器,然后我們通過 setTimeout 在 1000 毫秒以后向 event 對象發送事件 some_event,此時會調用some_event 的監聽器。

$ node event.js

some_event 事件觸發

EventEmitter 的每個事件由一個事件名和若干個參數組成,事件名是一個字符串,通常表達一定的語義。對于每個事件,EventEmitter 支持 若干個事件監聽器。

當事件觸發時,注冊到這個事件的事件監聽器被依次調用,事件參數作為回調函數參數傳遞。

讓我們以下面的例子解釋這個過程:

//event.js 文件 
var events = require('events');  
var emitter = new events.EventEmitter();  
emitter.on('someEvent', function(arg1, arg2) {  
  console.log('listener1', arg1, arg2);  
});  
emitter.on('someEvent', function(arg1, arg2) {  
  console.log('listener2', arg1, arg2);  
});  
emitter.emit('someEvent', 'arg1 參數', 'arg2 參數');  

執行以上代碼,運行的結果如下:

$ node event.js

listener1 arg1 參數 arg2 參數

listener2 arg1 參數 arg2 參數

以上例子中,emitter 為事件 someEvent 注冊了兩個事件監聽器,然后觸發了 someEvent 事件。

運行結果中可以看到兩個事件監聽器回調函數被先后調用。 這就是EventEmitter最簡單的用法。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苗栗市| 邻水| 岢岚县| 南乐县| 定安县| 美姑县| 宜阳县| 福建省| 南华县| 蕉岭县| 家居| 思南县| 呼伦贝尔市| 瓦房店市| 西和县| 遂溪县| 民乐县| 绥棱县| 汝南县| 双桥区| 阜康市| 泽州县| 岱山县| 东阿县| 汉川市| 湖南省| 信丰县| 牙克石市| 嵊泗县| 宁晋县| 张家川| 潞城市| 拉萨市| 闽侯县| 留坝县| 商河县| 阿城市| 临高县| 海门市| 太白县| 曲周县|