C# 信号器函数返回值

C# 信号器函数返回值,c#,signalr,signalr-hub,signalr.client,C#,Signalr,Signalr Hub,Signalr.client,我创建了一个信号集线器,其中包含以下集线器功能: public bool GetStatus() { return true; } 我想从我的JS代码中调用这个函数,并得到这个调用的请求。大概是这样的: var result = hub.server.getStatus(); if (result) alert('success'); 在不返回bool任务的情况下,这是可能的吗 谢谢。否。SignalR JavaScript客户端是非阻塞的;您需要遵循Promise界面,如下

我创建了一个信号集线器,其中包含以下集线器功能:

public bool GetStatus()
{
    return true;
}
我想从我的JS代码中调用这个函数,并得到这个调用的请求。大概是这样的:

var result = hub.server.getStatus();
if (result)
    alert('success');
在不返回bool任务的情况下,这是可能的吗


谢谢。

否。SignalR JavaScript客户端是非阻塞的;您需要遵循Promise界面,如下所示:

hub.server.getStatus().done(function(result) { 
    if (result) {
        alert('success'); 
    }
});

在客户端,您需要使用promise接口。但在服务器端,这完全取决于您,下面的代码来自信号机指南:

同步的

public IEnumerable<Stock> GetAllStocks()
{
        // Returns data from memory.
        return _stockTicker.GetAllStocks();
}
public async Task<IEnumerable<Stock>> GetAllStocks()
{
    // Returns data from a web service.
    var uri = Util.getServiceUri("Stocks");
    using (HttpClient httpClient = new HttpClient())
    {
        var response = await httpClient.GetAsync(uri);
        return (await response.Content.ReadAsAsync<IEnumerable<Stock>>());
    }
}
public IEnumerable GetAllStocks()
{
//从内存返回数据。
return_stockTicker.GetAllStocks();
}
异步的

public IEnumerable<Stock> GetAllStocks()
{
        // Returns data from memory.
        return _stockTicker.GetAllStocks();
}
public async Task<IEnumerable<Stock>> GetAllStocks()
{
    // Returns data from a web service.
    var uri = Util.getServiceUri("Stocks");
    using (HttpClient httpClient = new HttpClient())
    {
        var response = await httpClient.GetAsync(uri);
        return (await response.Content.ReadAsAsync<IEnumerable<Stock>>());
    }
}
公共异步任务GetAllStocks() { //从web服务返回数据。 var uri=Util.getServiceUri(“股票”); 使用(HttpClient HttpClient=new HttpClient()) { var response=wait-httpClient.GetAsync(uri); return(wait response.Content.ReadAsAsync()); } }
只需根据您的需要更改服务器签名

返回任务是什么意思?您希望它返回任何内容吗?有一个返回任务的选项,使整个过程异步。这就是我想要避免的。我认为你不必归还任何东西。我们使用信号器,不返回任何东西。也许我不明白整件事,这没道理。集线器没有返回值,它们调用客户端。我注意到它不是一个实际的JavaScript
Promise
,而是信号器自己的承诺类型(否则它将被称为
then
,而不是
done
)。更新:啊,信号器使用
JQueryPromise
,这里有文档记录: