【问题标题】:Javascript PubSub Scope IssueJavascript PubSub 范围问题
【发布时间】:2013-10-10 13:14:57
【问题描述】:

我在 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");
});

谢谢

皮特

【问题讨论】:

  • 您的测试在 设置任何订阅之前调用了您的“发布”API。
  • 另外,您的示例中不需要 new 关键字。您不是从构造函数构建对象,只是调用函数。

标签: javascript jquery publish-subscribe


【解决方案1】:

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

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

【讨论】:

  • @KonstantinK 谢谢 :) 我也做了,但我懒得保存它。
猜你喜欢
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多