每個人。
我正在嘗試在我的應用程式中應用觀察者模式。但是,問題是訂閱者不能監聽事件。當一個函式(useEvent.js)觸發事件時,什么也沒發生。下面寫的是我的代碼。
付款.js
const EventEmitter = require('events')
class PaymentEvent extends EventEmitter {
getPaid(paymentId) {
this.emit('create', paymentId)
console.log('Created')
}
}
module.exports = PaymentEvent
訂閱者.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
}
...
非常感謝您!
uj5u.com熱心網友回復:
正如評論中已經指出的那樣,您正在創建 的多個實體PaymentEvent,這意味著您創建了多個不同的事件發射器。
相反,您可以在需要時實體化PaymentEvent并payment.js匯入結果實體:
// payment.js
…
module.exports = new PaymentEvent;
// subscriber.js
const paymentEvent = require('./payment');
paymentEvent.on(…)
// useEvent.js
const paymentEvent = require('./payment');
…
paymentEvent.getPaid(paymentId);
…
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/456754.html
