Как установить интервал для получения данных из API (jQuery) - PullRequest
0 голосов
/ 26 февраля 2019

У меня простой вопрос: я использую эту функцию для получения цен от 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 голосов
/ 27 февраля 2019

У вас есть какой-то запутанный код.Я думаю, что вы намереваетесь, чтобы ваш fetch вызывался каждые 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);
...