Как игнорировать тайм-аут AJAX?
Мы хотим оставить решение пользователю отменить (отменить) запрос или дождаться ответа. Когда происходит тайм-аут, должно появиться диалоговое окно подтверждения, которое предлагает пользователю возможность дождаться ответа или отменить запрос:
$.ajax({
[...]
timeout: 2000,
success: function(data) {
[...]
};
});
$.ajaxSetup({
error: function(data, textStatus, pStatusDescription) {
if(textStatus === "timeout")
{
if(confirm("Do you want to wait for the response?"))
{
// continue request
}
else
{
// abort request
}
}
}
});
1 ответ
Вы можете использовать другой способ, установив таймаут независимо от запроса ajax:
let xhr;
const timeout = setTimeout(() => {
if(confirm("Do you want to wait for the response?")) {
// may be some code here
} else {
xhr.abort()
}
}, 2000);
xhr = $.ajax({
[...]
error: function() {
clearTimeout(timeout);
}
success: function(data) {
clearTimeout(timeout);
[...]
};
});