SignalR函数的返回值
问题描述:
我创建了包含以下枢纽功能的SignalR枢纽:SignalR函数的返回值
public bool GetStatus()
{
return true;
}
我想从我的JS代码调用这个函数,并得到该调用的请求。这样的事情:
var result = hub.server.getStatus();
if (result)
alert('success');
这可能没有返回布尔任务?
谢谢。
答
否SignalR JavaScript客户端是非阻塞的;您需要遵循Promise接口,如下所示:
hub.server.getStatus().done(function(result) {
if (result) {
alert('success');
}
});
答
在客户端,您需要使用promise接口。但在服务器端,这完全取决于你,下面的代码是从SignalR引导site:
同步
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>>());
}
}
只要改变服务器签名
你是什么意思返回任务? – 2014-10-27 18:35:46
你想让它返回任何东西吗? – 2014-10-27 18:37:33
有一个选项可以返回任务,这使整个过程异步。这是我想要避免的。 – No1Lives4Ever 2014-10-27 18:37:33