使用apply向服务器发送多个参数

时间:2014-10-29 17:48:20

标签: javascript angularjs function signalr

我正在使用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非常弱,而且我还没有能够提出一个有效的实现方法。

1 个答案:

答案 0 :(得分:2)

忽略我以前的评论。我误读了你包含的SignalR doc。基本上我假设你总是可以传递一个对象参数。它确实看起来像你可以做到你想做的事情

请参阅此jsbin,了解如何使用apply将参数从当前函数传递给invoke函数。

http://jsbin.com/juqanigulo/1/edit?html,js,console,output