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);
…
大家。
我正在尝试在我的应用程序中应用观察者模式。 但是,问题是订阅者无法收听事件。 当函数(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);
…