EventEmitter - 无法收听事件

EventEmitter - Could not listen an Event

大家。

我正在尝试在我的应用程序中应用观察者模式。 但是,问题是订阅者无法收听事件。 当函数(useEvent.js)触发事件时,什么也没有发生。 下面写的是我的代码。

payment.js

const EventEmitter = require('events')


class PaymentEvent extends EventEmitter {
    getPaid(paymentId) {
        this.emit('create', paymentId)
        console.log('Created')
    }
}


module.exports = PaymentEvent

subscriber.js

const PaymentEvent = require('./payment')
const payment = new PaymentEvent()
payment.on('create', paymentId => {
    console.log('Event Fired!!!')})

// Expected : 'Event Fired!!!'
// Result : Nothing happened
...

useEvent.js

const PaymentEvent = require('./payment')

const createPayment = async data => {
    const payment = await CorePayment.create(data)
    const paymentId = payment.id
    const paymentEvent = new PaymentEvent()
    
    // This parts of code will fire event! 
    paymentEvent.getPaid(paymentId)
    return paymentId
}
...

非常感谢您!

正如评论中已经指出的那样,您正在创建 PaymentEvent 的多个实例,这意味着您创建了多个 不同的 事件发射器。

相反,您可以在 payment.js 中实例化 PaymentEvent 并在需要时导入结果实例:

// payment.js
…
module.exports = new PaymentEvent;

// subscriber.js
const paymentEvent = require('./payment');
paymentEvent.on(…)

// useEvent.js
const paymentEvent = require('./payment');
…
paymentEvent.getPaid(paymentId);
…