有没有办法为 SignalR 传递回调函数?现在我的 site.js
messageHub.client.sendProgress = function (progress) {
//doSomething with progress
}
我想要的是
messageHub.client.sendProgress = function (progress,callback) {
callback(progress);
}
这将使我能够为同一 signalR 方法从网页定义不同的回调函数。 现在我正在通过在我的网页上定义一个函数以一种黑客式的方式来做到这一点
function fnSendProgress(progress) //define this for site.js.
{
//do something here
}
然后在 site.js
中通过
messageHub.client.sendProgress = function (progress) {
debugger;
//have a definition of a function called fnSendProgress(progress)
//if found it will call it else call default
if (typeof fnSendProgress == 'function') {
fnSendProgress(progress);
}
else {
//do something at site.js level
}
};
它有效,但我想知道是否有更干净的方法。 非常感谢任何帮助。
最佳答案
使用闭包:
function createfunction(callback)
{
return function(progress) { callback(progress); }
}
messageHub.client.sendProgress = createFunction(callback)
首先定义一个函数“createFunction”,给定一个回调,该函数返回另一个带有一个参数的函数,该函数调用指定的回调。
然后将调用该函数的结果分配给信号器的 sendProgress。
换句话说:对于您希望的每个回调,您可以动态生成一个带有一个参数的函数,该函数调用回调并将参数传递给它。
关于JavaScript 中的 SignalR 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15551809/