情况如下。我有一个长时间运行的数据库操作,用户可以从Web应用程序启动。我需要在操作完成时通知他们。使用ajax的jQuery承诺看起来非常好,在我的小测试页面中我有它工作,除了它似乎将它们锁定在该页面上,直到请求完成或失败。也许我编码错误 - 这是我的测试代码:
jQuery:
jQuery.fn.Process = function () {
var promise = $.ajax({
type: "POST",
url: "MyPage.aspx/MyTest",
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json"
});
promise.done(function () { alert("Import completed."); });
promise.fail(function () { alert("Import failed"); });
promise.always(function () { alert("Attempt complete"); });
};
测试服务:
<WebMethod()> _
Public Shared Function MyTest() As String
Dim strReturn As String = String.Empty
Threading.Thread.Sleep(60000) 'To test long response
Return strReturn
End Function
执行此代码后,它们将被锁定,直到完成或成功完成。