最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js自定義對(duì)象事件的監(jiān)聽(tīng)與發(fā)射

 更新時(shí)間:2022年07月05日 15:30:14   作者:社會(huì)主義接班人  
這篇文章介紹了Node.js自定義對(duì)象事件監(jiān)聽(tīng)與發(fā)射的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、Node.js是以事件驅(qū)動(dòng)的,那我們自定義的一些js對(duì)象就需要能監(jiān)聽(tīng)事件以及發(fā)射事件。

在Node.js中事件使用一個(gè)EventEmitter對(duì)象發(fā)出,該對(duì)象在events模塊中。它應(yīng)該是使用觀察者設(shè)計(jì)模式來(lái)實(shí)現(xiàn)把事件監(jiān)聽(tīng)器添加到對(duì)象以及移除,之前寫(xiě)OC那塊的時(shí)候也有些觀察者設(shè)計(jì)模式,在OC中也經(jīng)常用到:通知中心、KVO,也很容易理解.

  • .addListener(eventName,callback):將回調(diào)函數(shù)附加到對(duì)象的監(jiān)聽(tīng)器中。當(dāng)eventName的事件被觸發(fā)時(shí),回調(diào)函數(shù)被放置在事件隊(duì)列中執(zhí)行。
  • .on(eventName,callback):和.addListener一樣。
  • .once(eventName,callback),也是監(jiān)聽(tīng)不過(guò)只在第一次被觸發(fā)。
  • .listeners(eventName):返回一個(gè)連接到eventName事件的監(jiān)聽(tīng)器函數(shù)數(shù)組。
  • .setMaxListeners(n):如果多于n的監(jiān)聽(tīng)器加入到EventRmitter對(duì)象,就會(huì)出發(fā)警報(bào).
  • .removeListener(eventName,callback):將callback函數(shù)從EventEmitter對(duì)象的eventName事件中移除。

二、上面寫(xiě)了那么多也都是EventEmitter對(duì)象方法的使用,自定義的對(duì)象怎么能使用它們才是關(guān)鍵!

監(jiān)聽(tīng)方法都是在EventEmitter對(duì)象,要想讓自定義的對(duì)象也能使用這些方法,那就需要繼承EventEmitter。

js中實(shí)現(xiàn)繼承有好幾種方法:構(gòu)造函數(shù)、原型鏈、call、apply等,可以百度一下:js繼承。關(guān)于原型對(duì)象原型鏈這個(gè)寫(xiě)的挺不錯(cuò):三張圖帶你搞懂JavaScript的原型對(duì)象與原型鏈

只需將Events.EventEmitter.prototype添加到對(duì)象原型中.(在EventEmitter中是通過(guò)prototype來(lái)添加的監(jiān)聽(tīng)器方法)

三、使用

var events = require('events');
function Account() {
    this.balance = 0;
    //買(mǎi)的資料書(shū)上寫(xiě)要添加下面的語(yǔ)句,我將下面語(yǔ)句注釋掉也能實(shí)現(xiàn)繼承,應(yīng)該是不需要的吧
    //events.EventEmitter.call(this);
    this.deposit = function(amount){
        this.balance += amount;
        this.emit('balanceChanged');
    };
    this.withdraw = function(amount){
        this.balance -= amount;
        this.emit('balanceChanged');
    };
}
Account.prototype.__proto__ = events.EventEmitter.prototype;
function displayBalance(){
    console.log("Account balance: $%d", this.balance);
}
function checkOverdraw(){
    if (this.balance < 0){
        console.log("Account overdrawn!!!");
    }
}
function checkGoal(acc, goal){
    if (acc.balance > goal){
        console.log("Goal Achieved!!!");
    }
}
var account = new Account();
account.on("balanceChanged", displayBalance);
account.on("balanceChanged", checkOverdraw);
account.on("balanceChanged", function(){
    checkGoal(this, 1000);
});
account.deposit(220);
account.deposit(320);
account.deposit(600);
account.withdraw(1200);

輸出結(jié)果:

Account balance: $220
Account balance: $540
Account balance: $1140
Goal Achieved!!!
Account balance: $-60
Account overdrawn!!!

Process finished with exit code 0

到此這篇關(guān)于Node.js自定義對(duì)象事件的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Electron 調(diào)用命令行(cmd)

    Electron 調(diào)用命令行(cmd)

    這篇文章主要介紹了Electron 調(diào)用命令行(cmd),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Express實(shí)現(xiàn)登錄驗(yàn)證

    Express實(shí)現(xiàn)登錄驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了Express實(shí)現(xiàn)登錄驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • npm?ERR!Cannot?read?properties?of?null(reading?'pickAlgorithm')報(bào)錯(cuò)問(wèn)題解決

    npm?ERR!Cannot?read?properties?of?null(reading?'p

    這篇文章主要給大家介紹了關(guān)于npm?ERR!Cannot?read?properties?of?null(reading?'pickAlgorithm')報(bào)錯(cuò)問(wèn)題的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Node.js實(shí)現(xiàn)數(shù)據(jù)推送

    Node.js實(shí)現(xiàn)數(shù)據(jù)推送

    這篇文章主要為大家詳細(xì)介紹了Node.js實(shí)現(xiàn)數(shù)據(jù)推送的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-04-04
  • NodeJS GRPC簡(jiǎn)單的示例詳解

    NodeJS GRPC簡(jiǎn)單的示例詳解

    本文介紹了如何使用NodeJS GRPC,包括.proto文件的定義、客戶(hù)端和服務(wù)器的實(shí)現(xiàn),首先,創(chuàng)建.proto文件定義服務(wù)和消息,然后實(shí)現(xiàn)客戶(hù)端greeter_client.js文件,最后運(yùn)行服務(wù)器和客戶(hù)端,通過(guò)這篇文章,你可以快速掌握NodeJS GRPC的基礎(chǔ)使用方法
    2024-10-10
  • express文件上傳中間件Multer詳解

    express文件上傳中間件Multer詳解

    multer是express官方推薦的文件上傳中間件,它是在busboy的基礎(chǔ)上開(kāi)發(fā)的。目前multer的最新版本為:~1.1.0。本文將詳細(xì)介紹express文件上傳中間件Multer的安裝與使用等,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-10-10
  • 垃圾回收器的相關(guān)知識(shí)點(diǎn)總結(jié)

    垃圾回收器的相關(guān)知識(shí)點(diǎn)總結(jié)

    本文是小編在網(wǎng)絡(luò)上整理的關(guān)于垃圾回收器的相關(guān)知識(shí)點(diǎn),很多語(yǔ)言和程序都用的到,有興趣的可以學(xué)習(xí)下。
    2018-05-05
  • Nodejs監(jiān)控事件循環(huán)異常示例詳解

    Nodejs監(jiān)控事件循環(huán)異常示例詳解

    這篇文章主要給大家介紹了關(guān)于Nodejs監(jiān)控事件循環(huán)異常的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Nodejs具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • yarn的安裝和使用全網(wǎng)最詳細(xì)教程

    yarn的安裝和使用全網(wǎng)最詳細(xì)教程

    Yarn是facebook發(fā)布的一款取代npm的包管理工具,本文給大家介紹yarn的安裝和使用全網(wǎng)最詳細(xì)教程,感興趣的朋友一起看看吧
    2023-12-12
  • 如何在Node和瀏覽器控制臺(tái)中打印彩色文字

    如何在Node和瀏覽器控制臺(tái)中打印彩色文字

    這篇文章主要介紹了如何在Node和瀏覽器控制臺(tái)中打印彩色文字,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01

最新評(píng)論

开江县| 蚌埠市| 沙坪坝区| 萨嘎县| 柳江县| 桑日县| 永和县| 武平县| 苍南县| 巨野县| 临泉县| 顺昌县| 分宜县| 即墨市| 北流市| 克东县| 若羌县| 泸西县| 延川县| 莒南县| 盘锦市| 阿尔山市| 偏关县| 临夏市| 紫金县| 忻州市| 道孚县| 清远市| 甘孜| 名山县| 和龙市| 马公市| 柳州市| 称多县| 兴业县| 疏附县| 大宁县| 海阳市| 丰顺县| 汉阴县| 喀什市|