我正在使用SignalR与后端服务器进行通信的角色javascript客户端上工作。基本思想是您可以从客户端在服务器上执行远程过程调用,反之亦然。我有一个适当的抽象来调用一个不带参数的服务器方法,如下所示:
myInvoke: function (methodName, callback) {
proxy.invoke(methodName)
.done(function (result) {
$rootScope.$apply(function () {
if (callback) {
callback(result);
}
});
});
}
重要部分是proxy.invoke(methodName)
,它将服务器方法的名称作为字符串调用。
proxy还允许传递多个参数来调用。 SignalR documentation中的一些示例:
// one parameter
contosoChatHubProxy.invoke('newContosoChatMessage', { UserName: userName, Message: message}) ...
// two parameters
contosoChatHubProxy.invoke('NewContosoChatMessage', userName, message) ...
我想要完成的事情更像是这样,其中args是应该转发到集线器的任意数量的参数:
myInvoke: function (methodName, args, callback) {
proxy.invoke(methodName, args)...
我一直在阅读应用方法,但我的javascript非常弱,而且我还没有能够提出一个有效的实现方法。
答案 0 :(得分:2)
忽略我以前的评论。我误读了你包含的SignalR doc。基本上我假设你总是可以传递一个对象参数。它确实看起来像你可以做到你想做的事情
请参阅此jsbin,了解如何使用apply将参数从当前函数传递给invoke函数。