0

我想在布局和部分页面中使用 SignalR 集线器。这里描述使用hub.startdone功能。

所以我的 html 页面中有两个脚本块,我想在其中使用 SignalR:

<script>
    $(document).ready(function () {
        window.hubReady = $.connection.hub.start();
        window.hubReady.done(function () {
            ...
        });
</script>

<script>
    $(document).ready(function(e) {
        window.hubReady.done(function() {
            ...
        });
    });
</script>

在第二个脚本块中,它说windows.hubReady.done由于未定义而无法执行。

编辑:块 2 在块 1 之前执行。但是为什么呢?

4

2 回答 2

2

我的猜测是第二个回调在第一个回调之前执行,如果是这种情况,那么 window.hubReady 为空,因为它是初始化 window.hubReady 的第一个回调。

我建议您不要创建对集线器的全局引用,而是直接引用它,即:

<script>
    $(document).ready(function(e) {
        $.connection.hub.connected(function() {
            ...
        });
    });
</script>

(如果这不起作用,那么我怀疑您的名为“hub”的集线器未在服务器上定义,但这是一个不同的问题)

于 2013-02-25T11:23:48.360 回答
0

我通过不调用$(document).ready(function(e)$(window).load(function()在我的部分 html 中解决了这个问题。 $(window).load(function()然后被称为第二个。

于 2013-02-25T15:27:40.287 回答