【发布时间】:2021-04-02 05:00:15
【问题描述】:
我正在为 javascript 创建一个 pubsub 类。其中有 3 种方法是“发布、订阅、取消订阅”。我编写了发布和订阅的逻辑,但可以弄清楚取消订阅方法。我的 pubsub js 看起来像这样。
class PubSub {
constructor() {
this.subscription = []
}
publish(namespace, payload) {
console.log('publishing');
if (!this.subscription[namespace]) return;
this.subscription[namespace].forEach(callback => {
callback(payload)
})
}
subscribe(namespace, callback) {
console.log('subscribing')
if (!this.subscription[namespace]) {
this.subscription[namespace] = [];
}
this.subscription[namespace].push(callback);
}
unsubscribe(namespace, callback) {
if (!this.subscription[namespace]) return;
this.subscription[namespace].splice(index, 1);
}
}
module.exports = PubSub;
我的活动发布者看起来像这样:-
const { PubSub } = require('./pubsub');
const pubsub = new PubSub();
exports.PublishEvent = () => {
const data = {
msg: "Bla bla data"
};
pubsub.publish(data);
}
事件订阅者看起来像这样
const { PubSub } = require("./pubsub");
const pubsub = new PubSub();
pubsub.subscribe("anEvent", data => {
console.log(
`"anEvent", was published with this data:"${data.message}"`
)
})
目前我遇到了问题
const pubsub = new PubSub();
^
TypeError: PubSub is not a constructor
谁能帮我解决这个问题并使代码工作。提前致谢。
【问题讨论】:
标签: javascript node.js publish-subscribe