91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Node.js 事件

發布時間:2020-08-09 23:25:05 來源:ITPUB博客 閱讀:130 作者:as507169008 欄目:web開發

Node.js 事件

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

Node.js 里面的許多對象都會分發事件:一個net.Server對象會在每次有新連接時分發一個事件, 一個fs.readStream對象會在文件被打開的時候發出一個事件。 所有這些產生事件的對象都是 events.EventEmitter 的實例。 你可以通過require("events");來訪問該模塊。

。。。

EventEmitter介紹

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

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

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

。。。

EventEmitter常用的API

http://www.iis7.com/a/lm/zzxzgj/

EventEmitter.on(event, listener)、emitter.addListener(event, listener) 為指定事件注冊一個監聽器,接收一個字符串 event 和一個回調函數 listener。

server.on('connection', function (stream) {

  console.log('someone connected!');

});

EventEmitter.emit(event, [arg1], [arg2], [...]) 發射 event 事件,傳 遞若干可選參數到事件監聽器的參數表。

EventEmitter.once(event, listener) 為指定事件注冊一個單次監聽器,即 監聽器最多只會觸發一次,觸發后立刻解除該監聽器。

server.once('connection', function (stream) {

  console.log('Ah, we have our first user!');

});

EventEmitter.removeListener(event, listener) 移除指定事件的某個監聽 器,listener 必須是該事件已經注冊過的監聽器。

var callback = function(stream) {

  console.log('someone connected!');

};

server.on('connection', callback);

// ...

server.removeListener('connection', callback);

EventEmitter.removeAllListeners([event]) 移除所有事件的所有監聽器, 如果指定 event,則移除指定事件的所有監聽器。

。。。

error 事件

EventEmitter 定義了一個特殊的事件 error,它包含了"錯誤"的語義,我們在遇到 異常的時候通常會發射 error 事件。

當 error 被發射時,EventEmitter 規定如果沒有響 應的監聽器,Node.js 會把它當作異常,退出程序并打印調用棧。

我們一般要為會發射 error 事件的對象設置監聽器,避免遇到錯誤后整個程序崩潰。例如:

var events = require('events'); 

var emitter = new events.EventEmitter(); 

emitter.emit('error'); 

。。。

繼承 EventEmitter

大多數時候我們不會直接使用 EventEmitter,而是在對象中繼承它。包括 fs、net、 http 在內的,只要是支持事件響應的核心模塊都是 EventEmitter 的子類。

為什么要這樣做呢?原因有兩點:

首先,具有某個實體功能的對象實現事件符合語義, 事件的監聽和發射應該是一個對象的方法。

其次JavaScript 的對象機制是基于原型的,支持 部分多重繼承,繼承 EventEmitter 不會打亂對象原有的繼承關系。


向AI問一下細節

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

AI

海盐县| 麻栗坡县| 海阳市| 香河县| 德惠市| 额尔古纳市| 高青县| 苏州市| 宁海县| 河东区| 沙坪坝区| 莆田市| 赤城县| 南雄市| 清原| 外汇| 江安县| 彰化县| 通州市| 丘北县| 杭锦后旗| 襄樊市| 遵义市| 历史| 古浪县| 松潘县| 石泉县| 大姚县| 红安县| 淮安市| 濮阳市| 乡宁县| 龙里县| 吴江市| 宜兰县| 田阳县| 广昌县| 伊吾县| 漳平市| 凤山县| 河池市|