如果AJAX请求超过3秒,请执行某些操作

时间:2015-06-29 13:26:36

标签: javascript ajax freegeoip

我正在为欧洲的cookie法(实际上只在欧洲的一些国家/地区)开发一个开源script

我正在尝试添加一项功能,以检测当前正在浏览网站的用户是否来自欧洲,并且仅针对欧洲的用户显示该插件。

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 ......但它引导我this answer,这正是我需要什么。

0 个答案:

没有答案