【问题标题】:I am creating a pubsub class in js , but i am having issue with the the class export import我在 js 中创建了一个 pubsub 类,但是我遇到了类导出导入的问题
【发布时间】: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


    【解决方案1】:

    您不需要创建 PubSub 类的实例/对象。试试这个

    import { PubSub } from 'pubsub-js';
    
    // to publish
    PubSub.publish("anEvent", {message = "hello world!"});
    
    //to subscribe
    PubSub.subscribe("anEvent", data => {
      console.log(
        `"anEvent", was published with this data:"${data.message}"`
      )}
    );
    

    他们的文档有例子https://github.com/mroderick/PubSubJS#readme

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 2019-05-15
      • 1970-01-01
      • 2019-10-07
      • 2011-07-31
      • 2020-08-23
      • 1970-01-01
      相关资源
      最近更新 更多