我有一个jquery ajax调用c#asmx web方法,它进行一些处理,并在内部调用更多api的\ DB操作等等大约需要20-30秒
WEB METHOD
[WebMethod]
public void dummy()
{
File.Create(@"C:\test\test" + DateTime.Now.Millisecond.ToString() + ".txt");
System.Threading.Thread.Sleep(60000);
}
AJAX CALL
$.ajax(
{
url:Service.asmx/dummy",
contentType: "application/json; charset=utf-8",
dataType: "json",
type: "POST",
success: function (strData) {
alert('done');
}
});
ajax调用是在一个被触发2次的循环中,但是web方法只被调用一次,所以我尝试async: false
,然后web方法被击中两次,但是在延迟60秒之后。
我做错了什么?
答案 0 :(得分:1)
在后面的代码中删除System.Threading.Thread.Sleep(60000)
的延迟,并在收到服务器端的响应后发送第二个ajax
调用。
$.ajax(
{
url:Service.asmx/dummy",
contentType: "application/json; charset=utf-8",
dataType: "json",
type: "POST",
success: function (strData) {
alert('done');
//send second call here
}
error: function (jqXHR, textStatus, errorThrown) {
//send second call here if required.
}
});
如果同时呼叫没有任何同步问题,则可以同时删除延迟并发送多个呼叫。