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

溫馨提示×

溫馨提示×

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

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

Node.js事件的示例分析

發布時間:2021-11-22 09:22:16 來源:億速云 閱讀:108 作者:小新 欄目:web開發

這篇文章主要為大家展示了“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事件的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

化隆| 乡宁县| 康平县| 昌吉市| 且末县| 乌兰察布市| 定西市| 甘洛县| 新丰县| 苏尼特右旗| 二连浩特市| 河东区| 通海县| 资源县| 界首市| 儋州市| 镇宁| 绥中县| 道孚县| 平遥县| 镇远县| 花莲市| 明光市| 临武县| 南充市| 玛沁县| 六枝特区| 神木县| 万宁市| 木兰县| 营口市| 贡山| 元阳县| 什邡市| 金门县| 顺昌县| 大港区| 龙陵县| 鄂托克旗| 巴林右旗| 镇原县|