我想通过.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
函数
如何管理超时? 感谢
答案 0 :(得分:1)
您是否曾尝试使用.then(successCallbackFunction, failCallbackFunction)
:
$.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( // success
function() {
alert('Success!');
},
// failure
function(jqXHR, textStatus){
if(textStatus == 'timeout')
{
alert('Failed from timeout');
} else {
alert('Failed from: '+textStatus);
}
}
);