我什么时候应该使用EventEmitter?

时间:2016-08-10 18:40:09

标签: javascript node.js eventemitter

我读了很多关于EventEmitter的内容。但我不知道在哪种情况下我需要在我的Node.js应用程序中使用它。

1 个答案:

答案 0 :(得分:19)

每当代码对SUBSCRIBE有意义而不是从某些东西获得回调时。典型的用例是应用程序中存在多个代码块,可能需要在事件发生时执行某些操作。

例如,假设您正在创建一个票务系统。处理事情的常用方法可能是这样的:

function addTicket(ticket, callback) {
    insertTicketIntoDatabase(ticket, function(err) {
        if (err)
            return handleError(err);

        callback();
    });
}

但是现在,有人决定在将数据库插入数据库时​​,您应该通过电子邮件发送给用户,让他们知道。没关系,你可以把它添加到回调中:

function addTicket(ticket, callback) {
    insertTicketIntoDatabase(ticket, function(err) {
        if (err)
            return handleError(err);

        emailUser(ticket, callback);
    });
}

但是现在,有人还希望通知另一个系统已插入故障单。随着时间的推移,插入故障单时可能会发生任何事情。所以让我们改变一下:

function addTicket(ticket, callback) {
    insertTicketIntoDatabase(ticket, function(err) {
        if (err)
            return handleError(err);

        TicketEvent.emit('inserted', ticket);
        callback();
    });
}

在通知用户界面之前,我们不再需要等待所有这些功能完成。在代码的其他地方,您可以轻松添加这些功能:

TicketEvent.on('inserted', function(ticket) {
    emailUser(ticket);
});

TicketEvent.on('inserted', function(ticket) {
    notifySlack(ticket);
});