有没有办法为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
}
};
它有效,但我想知道是否有更清洁的方法。 任何帮助非常感谢。
答案 0 :(得分:3)
使用闭包:
function createfunction(callback)
{
return function(progress) { callback(progress); }
}
messageHub.client.sendProgress = createFunction(callback)
首先定义一个函数“createFunction”,给定一个回调返回另一个带有一个参数的函数,该函数调用指定的回调。
然后将调用该函数的结果分配给signalr的sendProgress。
换句话说:对于每个回调,您希望动态生成一个带有一个参数的函数,该函数调用回调并将参数传递给它。