如何设置从API获取数据的时间间隔(jQuery)

时间:2019-02-26 19:20:14

标签: javascript json setinterval

我有一个简单的问题:我正在使用this函数从CryptoCompare获取价格,现在我想设置刷新数据的间隔而不刷新页面。所以我尝试了这段代码:

<script>
    getData('dash', 'https://min-api.cryptocompare.com/data/price?fsym=DASH&tsyms=USD');

    function getData(prefix, url) {
      $.getJSON(url, function(data) {
        $.each(data, function(key, val) {
          $('.' + prefix + '-' + key.toLowerCase()).html(val);
        });
      });
    }
    setInterval(getData, 3000);
    $(function() {
      getData();
    });
</script>

但这对我不起作用。你能帮我吗?

1 个答案:

答案 0 :(得分:0)

您有一些复杂的代码。我认为您打算要每3秒调用一次访存。

function getData(prefix, url) {
  $.getJSON(url, function(data) {
    $.each(data, function(key, val) {
      $('.' + prefix + '-' + key.toLowerCase()).html(val);
    });
  });
}

这定义了您的功能。您有一个示例通话

getData('dash', 'https://min-api.cryptocompare.com/data/price?fsym=DASH&tsyms=USD');

尽管您使用的setInterval不正确,请参见https://www.w3schools.com/jsref/met_win_setinterval.asp

这里有2行

setInterval(getData, 3000);
$(function() {            getData();        });

这是不正确的,getData只是函数的名称。 setInterval函数应该将匿名函数带有已定义的参数,例如

setInterval($(function() {           
  getData('dash', 'https://min-api.cryptocompare.com/data/price?fsym=DASH&tsyms=USD'); 
}), 3000);

对于您的JS小提琴来说,这对我有用(删除了jquery函数,并替换为常规js lambda)

function getData(prefix, url) {
  $.getJSON(url, function(data) {
    $.each(data, function(key, val) {
      $('.' + prefix + '-' + key.toLowerCase()).html(val);
    });
  });
}
setInterval(function() {    
  getData('btc', 'https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD'); 
}, 3000);