我有一个父视图和子视图模型。父视图模型启动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中有这样的东西吗?或者我是否需要在viewmodels之间使用timeouts / pub / sub?
答案 0 :(得分:4)
这似乎是构建应用程序的更多问题。
您可以将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');
});
});
答案 1 :(得分:0)
试试这个
$.connection.hub.start().done(function () {
// hub is now ready
chat.server.addUserToChat(self.currentUsername()).done(function() {
alert('added');
});
});