Если запрос AJAX занимает более 3 секунд, сделайте что-нибудь

Я разрабатываю скрипт с открытым исходным кодом для закона о файлах cookie, который мы имеем в Европе (на самом деле, только в некоторых странах Европы).

Я пытаюсь добавить функциональность, которая определяет, является ли пользователь, который в настоящее время просматривает веб-сайт, из Европы, или нет, и показывать плагин только для тех, кто в Европе.

Freegeoip.net имеет REST-сервис, который, кажется, хорошо подходит для моих нужд, но я обнаружил, что иногда он очень медленный (это может зависеть от соединения, но я бы предпочел не рисковать), и есть 10.000 запросов в час лимит. Поскольку мой плагин распространяется через jsdelivr, некоторые крупные сайты могут достичь этого предела.

Итак, вот мой вопрос: как я могу обнаружить, что этот AJAX-запрос занимает слишком много времени (скажем, более 3 секунд), и показать полосу в любом случае?

Это чистый плагин JavaScript, вот код:

var cookieLawStates = [
  'BE',
  'BG',
  ...
];

var checkEurope = new XMLHttpRequest();
checkEurope.open('GET', 'https://freegeoip.net/json/', true);
checkEurope.onreadystatechange = function() {
  if (checkEurope.readyState === 4 && checkEurope.status === 200) {
    var country = JSON.parse(checkEurope.responseText).country_code;

    if (cookieLawStates.indexOf(country) > -1) {
      // some other logic before showing the bar
    } else {
      console.log('Not an EU user. cookieBAR is shut down.');
    }
  }
}
checkEurope.send();

РЕДАКТИРОВАТЬ: спасибо mplungjan за указание мне на другой ответ, даже если это было немного не по теме здесь, так как я использую простой javascript, а не jquery... но это привело меня к этому ответу, который именно то, что мне нужно.

0 ответов

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