【发布时间】:2014-09-18 12:44:21
【问题描述】:
我想用.when 和.then 管理一个超时的ajax 调用。
我有一个这样的脚本:
$.when(
$.ajax({
url: url_ajax,
type: "GET",
async: true,
data: window.location.search,
dataType: "json",
timeout: 30000,
success: function(data) {
console.log('ok');
},
error: function(data) {
}
}),
$.ajax({
url: url_ajax,
type: "GET",
async: true,
data: window.location.search,
dataType: "json",
success: function(data) {
console.log('ok');
},
timeout: 30000,
error: function(data) {
}
})
).then(function() {
alert('end');
});
如果 ajax 请求超时,则不会调用回调 .then,并且我看不到最后一个警报。
因此,如果我的 ajax 请求超时,我将无法退出进入 then 函数。
我也尝试在每个 ajax 请求之后添加这个:
.fail(function(jqXHR, textStatus){
if(textStatus == 'timeout')
{
alert('Failed from timeout');
}
})
但又没有进入then函数
如何管理超时? 谢谢
【问题讨论】:
-
查看 API:api.jquery.com/deferred.then。你试过
.then(successCallbackFunction, failCallbackFunction)吗? -
您能否提供一个包含我的代码的示例,以便更好地理解什么是好方法? @mccannf