Если запрос 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... но это привело меня к этому ответу, который именно то, что мне нужно.