1

我在 Javascript 中遇到了 PubSub 的问题。我试图弄清楚为什么 $.subscribe 没有打印价值。我假设它是因为 $.publish 和 $.subscribe 之间的范围。

我想让其他模块订阅该事件。我该怎么做?我在 jsfiddle 上举了一个例子:

http://jsfiddle.net/Fvk2G/

window.MQ = (function (window, document, undefined) {

    "use strict";

    function MQ() {

        testPubSub();

        function testPubSub() {
            $.publish("test");
        }
    }

    return MQ

})(this, this.document);

var mq = new MQ();

$.subscribe("test", function () {
    console.log("print value");
});

谢谢

皮特

4

1 回答 1

1

您已经建立了一个使用 jQuery 事件处理来中继消息的系统,这本身并不是一个坏主意。但是,如果您期望它将保存已触发的事件并将其报告给后续的“订阅者”,那么您对事件机制的语义做出了错误的假设。如果一棵树倒在森林里,直到您的远足派对到来,森林才会保留声音。同样,在没有侦听器的情况下触发的事件会被遗忘。

如果您在订阅完成后将创建“MQ”的代码移到,那么它可以正常工作。

于 2013-10-10T13:22:17.580 回答