Node.js之事件监听和发送

演示事件的发送和监听

const events = require("events");

function Account() {
    this.balance = 0;
    events.EventEmitter.call(this);

    this.deposid = 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 overdraw!!!");
    }
}

function checkGoal(acc, goal) {
    if (acc.balance > goal) {
        console.log("Goal archieved!!!");
    }
}


const account = new  Account();
account.on("balanceChanged", displayBalance);
account.on("balanceChanged", checkOverdraw);
account.on("balanceChanged", function () {
    checkGoal(this, 1000);
});

account.deposid(220);
account.deposid(320);
account.deposid(620);
account.withdraw(1200);

打印结果:

Account  balance: $220
Account  balance: $540
Account  balance: $1160
Goal archieved!!!
Account  balance: $-40
Account overdraw!!!
posted @ 2017-06-16 18:21  马在路上  阅读(215)  评论(0编辑  收藏