2014-10-27 5 views
8

Я создал концентратор SignalR, которые содержат следующую функцию хаба:SignalR значение функции возврата

public bool GetStatus() 
{ 
    return true; 
} 

Я хочу, чтобы вызвать эту функцию из моего JS кода и получить запрос этого вызова. Что-то вроде этого:

var result = hub.server.getStatus(); 
if (result) 
    alert('success'); 

Возможно ли это без возврата Задача bool?

спасибо.

+0

Что вы подразумеваете под возвращением Задачи? –

+0

Вы хотите, чтобы он что-то возвращал? –

+0

Существует возможность вернуть задачу, которая делает весь процесс асинхронным. Этого я хочу избежать. – No1Lives4Ever

ответ

23

№. Клиент JavaScript SignalR не блокирует; вам необходимо будет следовать интерфейсу Promise, например:

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

На стороне клиента вам потребуется использовать интерфейс обещаний. но на стороне сервера, это полностью зависит от вас, ниже кода из 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>>()); 
    } 
} 

Просто измените подпись сервера в соответствии с потребностями

Смежные вопросы