Как игнорировать тайм-аут 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);
  
    [...]
  };   
});

Другие вопросы по тегам