在hub.start()之后检测signalR集线器何时准备好()

问题描述:

我有父视图和子视图模型。父视图模型开始signalR连接:在hub.start()之后检测signalR集线器何时准备好()

$.connection.hub.start() 

子视图模型 - 即只加载在用户访问聊天一个 - 执行以下操作:

chat.server.addUserToChat(self.currentUsername()).done(function() { 
    alert('added'); 
}); 

问题是,孩子通话之前发生的事情父母的电话。我可以用1秒的setTimeout解决这个问题,但理想的我可以做这样的事情:

$.connection.hub.ready(function(){chat.server.addUserToChat(self.currentUsername()).done(function() { 
     alert('added'); 
    });}); 

有没有像这样signalR什么?或者我需要在视图模型之间使用timeouts/pub/sub?

这似乎是多种结构化你的应用程序的问题。 您可以通过存储在hub.start()一些全局对象返回的递延对象,并访问你的孩子视图模型:

window.chatApp = { 
    hubConnector: $.connection.hub.start() 
}; 

// in your child viewmodel 
chatApp.hubConnector.done(function() { 
    chat.server.addUserToChat(self.currentUsername()).done(function() { 
     alert('added'); 
    }); 
}); 

试试这个

$.connection.hub.start().done(function() { 
    // hub is now ready 
    chat.server.addUserToChat(self.currentUsername()).done(function() { 
    alert('added'); 
    }); 
}); 
+0

因为我开始从父视图模型的轮毂连接,我不能做到这一点,我需要知道什么时候从孩子那里完成。 – SB2055