asp.net chama WebMethod de Javascript assíncrono
Estou tentando criar uma página asp.net (c #) que atualiza alguns textos de estado a cada segundo. Agora eu implementei um botão que chama outro PageMethod que reinicia algo e demora um pouco. O problema é que, quando eu chamo o PageMethod de reinicialização, o PageMethod de atualização não pode ser atualizado enquanto o método de reinicialização continuar ...
Eu escrevi um pequeno exemplo para mostrar o que quero dizer:
WebMethods na minha página:
[WebMethod]
public static string Update()
{
//return "a" to see when the Update PageMethod succeeded
return "a";
}
[WebMethod]
public static string Restart()
{
//the restart will take a while
Thread.Sleep(2000);
//return "a" to see when the Restart PageMethod succeeded
return "a";
}
os elementos html a serem atualizados:
<p id="update" style="float:left;"></p>
<p id="restart" style="float:right;"></p>
o Pagemethod chama:
callUpdate()
function callUpdate() {
PageMethods.Update(function (text) {
//itself+text from pagemethod
$('#update').text($('#update').text() + text);
});
setTimeout(callUpdate, 1000);
}
callRestart()
function callRestart() {
PageMethods.Restart(function (text) {
//itself+text from pagemethod
$('#restart').text($('#restart').text() + text);
});
setTimeout(callRestart, 1000);
}
Nota: The Up, date também é chamada a cada segundo após o término, apenas para ver como funciona
Para esclarecer: quero que o PageMethods seja executado independentemente do que o outro PageMethod tenha terminad
Eu também voei sobre alguns links como:http: //esskar.wordpress.com/2009/06/30/implementing-iasyncresult-aka-namedpipeclientstream-beginconnect
http: //msdn.microsoft.com/en-us/library/aa480516.asp
Mas eu não acho que isso é o que eu preciso (?) E eu realmente não sei como chamar isso de Javascript (BeginXXX e Endxxx)
*EDIT: *
Em relação a Massimiliano Peluso, o código js ficaria assim:
callUpdate()
function callUpdate() {
$.ajax({
type: "POST",
url: "ServicePage.aspx/Update",
data: "{}",
contentType:
"application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$('#update').text($('#update').text() + msg.d);
}
});
setTimeout(callUpdate, 1000);
}
callRestart()
function callRestart() {
$.ajax({
type: "POST",
url: "ServicePage.aspx/Restart",
data: "{}",
contentType:
"application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$('#restart').text($('#restart').text() + msg.d);
}
});
setTimeout(callRestart, 1000);
}
ota: quando eu executo a página com os novos js, existe exatamente o mesmo problema de antes: O método Update não pode fazer nada até que o método Restart seja concluíd