gpt4 book ai didi

javascript - SignalR JS 客户端 : passing arguments to the invoke method

转载 作者:行者123 更新时间:2023-11-30 10:13:41 25 4
gpt4 key购买 nike

我正在尝试在对象 appHub 中编写一个函数,它将调用服务器上的方法。这是我的代码:

var connection = $.hubConnection();
var appHubProxy = connection.createHubProxy('appHub');

var appHub = {

//some methods here

invoke: function(){
appHubProxy.invoke.call(arguments);
}
}

如您所见,invoke 方法应该这样调用:

appHub.invoke('serverMethod', arg1, ..., argN)

运行此代码时出现此错误:

Uncaught TypeError: Cannot read property '_' of undefined

我尝试了 appHubProxy.invoke(arguments),它没有抛出错误,但当然,服务器方法从未被调用。

如何正确地将参数传递给 SignalR 的调用方法?

最佳答案

两个问题:

  1. 当您使用 Function.prototype.call 时或 Function.prototype.apply ,您需要传递的第一个参数是上下文(this 的值)
  2. 如果您想将参数作为数组传递,您需要使用apply 而不是call

在您的代码中,您使用数组作为上下文来调用 invoke 方法。 invoke 方法正在寻找一个嵌套属性(可能是 this.connection._),该属性在数组中不存在,所以这就是您收到错误的原因。

所以你可能想改用这个:

appHubProxy.invoke.apply(appHubProxy, arguments);

关于javascript - SignalR JS 客户端 : passing arguments to the invoke method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25101500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com