您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Node.js事件的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Node.js事件的示例分析”這篇文章吧。
快速概覽
要訪問此模塊,只需使用如下語句:
require(‘events’)
requires(‘events’).EventEmitter
特別說明,node中所有能觸發事件的對象基本上都是后者的實例。讓我們創建一個簡單的演示程序Dummy:
dummy.js
// basic imports var events = require('events'); // for us to do a require later module.exports = Dummy; function Dummy() { events.EventEmitter.call(this); } // inherit events.EventEmitter Dummy.super_ = events.EventEmitter; Dummy.prototype = Object.create(events.EventEmitter.prototype, { constructor: { value: Dummy, enumerable: false } });
上述代碼中重點展示如何使用EventEmitter擴充對象,并從中繼承所有的原型對象,方法…等等。
現在,我們假設Dummy有一個cooking()的方法,一旦把食物做熟之后它會觸發’cooked’事件,并調用一個名為’eat’的回調函數。
dummy-cooking.js
Dummy.prototype.cooking = function(chicken) { var self = this; self.chicken = chicken; self.cook = cook(); // assume dummy function that'll do the cooking self.cook(chicken, function(cooked_chicken) { self.chicken = cooked_chicken; self.emit('cooked', self.chicken); }); return self; }
現在,這個模塊已經完成了。我們可以在主程序中使用它。
dummy-node.js
// A nonsensical node.js program var Dummy = require('./dummy'); var kenny = new Dummy(); var dinner = kenny.cooking(fried_chix); dinner.on('cooked', function(chicken) { // eat up! }>
所以基本上,node.js執行腳本,然后等待’cooked’事件被觸發,并在事件觸發之后調用回調函數并傳遞返回的參數。
還有什么要注意的
值得注意的是,例子中使用的“子類”和事件有一些極端(a bit of an overkill)。EventEmitter每次只觸發一個事件(EventEmitter for things that only fire one event once)。如果只創造少數幾個實例,可以將方法直接加入到實例本身,如果要觸發底層事件,可能實用異步函數會更好一些。
關于events.EventEmitter,你還需注意一個特別的事件:’error’。任何錯誤發生時此事件都會觸發,并且當沒有監聽程序監聽這個事件時,node將會拋出異常并結束應用程序。(感謝Tim指出這一點)
以上是“Node.js事件的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。