2014-10-27 21 views
8

ho creato un hub SignalR contenenti la funzione di hub:SignalR valore della funzione di ritorno

public bool GetStatus() 
{ 
    return true; 
} 

Sono voglio chiamare questa funzione dal mio codice JS e ottenere la richiesta di questa chiamata. Qualcosa del genere:

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

E 'possibile senza ricorrere a Task di bool?

Grazie.

+0

cosa intendi restituendo Task? –

+0

vuoi che restituisca qualcosa? –

+0

Esiste un'opzione per restituire Attività, che rende l'intero processo asincrono. Questo quello che voglio evitare. – No1Lives4Ever

risposta

23

No. Il client JavaScript SignalR è non bloccante; sarà necessario seguire l'interfaccia Promise, in questo modo:

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

Sul lato client è necessario utilizzare l'interfaccia di promessa. ma sul lato server che è interamente a voi, il codice qui sotto è dalla guida SignalR site:

sincrono

public IEnumerable<Stock> GetAllStocks() 
{ 
     // Returns data from memory. 
     return _stockTicker.GetAllStocks(); 
} 

Asynchronous

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>>()); 
    } 
} 

basta cambiare la firma del server in base alle proprie esigenze