我正在使用 Angular 开发一个 JavaScript 客户端,它使用 SignalR 与后端服务器进行通信。基本思想是您可以从客户端在服务器上执行远程过程调用,反之亦然。我有一个适当的抽象来调用不带参数的服务器方法,如下所示:
myInvoke: function (methodName, callback) {
proxy.invoke(methodName)
.done(function (result) {
$rootScope.$apply(function () {
if (callback) {
callback(result);
}
});
});
}
重要的部分是proxy.invoke(methodName)
,它将要调用的服务器方法的名称作为字符串。
代理还允许传递多个参数来调用。来自 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)...
我一直在阅读有关 apply 方法的内容,但我的 javascript 非常弱,而且我无法想出一个可行的实现。
最佳答案
忽略我之前的评论。我误读了您包含的 SignalR 文档。基本上我假设你总是可以传递单个对象参数。看起来你确实可以通过这样做来完成你想要的事情
请参阅此 jsbin,了解如何使用 apply 将参数从当前函数传递到调用函数。
关于javascript - 使用 apply 将多个参数发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26637329/