如何在javascript中终止或取消异步调用?
我向MVC控制器发送以下请求:如何在javascript中终止或取消异步调用?,javascript,asp.net-mvc-4,Javascript,Asp.net Mvc 4,我向MVC控制器发送以下请求: var datum = { param1: value, param2: value, param3: value }; $.ajax ({ type: "POST", contentType: "application/json; charset=utf-8", url: getAbsolutePath() + "Controller/MethodName", dataType: "json", data: JSON.stringify(d
var datum = { param1: value, param2: value, param3: value };
$.ajax
({
type: "POST",
contentType: "application/json; charset=utf-8",
url: getAbsolutePath() + "Controller/MethodName",
dataType: "json",
data: JSON.stringify(datum),
success: function (response)
{
var result = response;
}
});
有时候,回应需要花费太多的时间。我正在寻找一种方法来终止或取消这个请求。如何实现此目的?您可以使用.abort取消请求:
var xhr = $.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: getAbsolutePath() + "Controller/MethodName",
dataType: "json",
data: JSON.stringify(datum),
success: function (response) {
var result = response;
}
});
xhr.abort();
如果请求花费的时间太长,可以使用ajax的timeout属性来取消请求
请参阅jquery。ajax返回规范化的XMLHttpRequest,只需使用其中止方法:
var xhr = $.ajax(params);
xhr.abort();
我的建议是,使用timeout属性:
$.ajax
({
type: "POST",
contentType: "application/json; charset=utf-8",
url: getAbsolutePath() + "Controller/MethodName",
timeout: 100000, //cancels automatically after 100 seconds
dataType: "json",
data: JSON.stringify(datum),
success: function (response)
{
var result = response;
}
});
取消这个请求有什么意义?如果响应延迟太多,请让您的成功处理程序忽略响应。响应耗时太长,我的页面被卡住。直到响应到来。如果您的页面被卡住,那么您不是在进行异步调用。你发布的代码肯定是异步的,因此你的页面被卡住的唯一方式是通过你自己的其他机制,而你没有发布或描述过这一点。为什么建议使用timeout的人会得到否决票?我认为这是解决这个问题的一个有用的建议;这是一个很好的方法。