在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');
});
});
因为我开始从父视图模型的轮毂连接,我不能做到这一点,我需要知道什么时候从孩子那里完成。 – SB2055