每秒从API更新数据

时间:2018-10-17 10:16:42

标签: javascript html ajax api

我目前正在一个学校项目中使用Spotify API。到目前为止,我已经收到了有人正在听的当前歌曲。

但是问题是,仅在刷新或打开网站后才接收信息,但是我希望它保持每秒刷新一次(而不刷新整个页面),因此它与侦听器是最新的。这里有人对我如何实现这一目标有任何想法吗?

这是我正在使用的AJAX请求(我不确定它是否有用)

$.ajax({
    url: 'https://api.spotify.com/v1/me/player/currently-playing',
    headers: {
      'Authorization': 'Bearer ' + access_token
    },
    success: function(response) {
      userInfoPlaceholder.innerHTML = userInfoTemplate(response);
        console.log(response);
      $('#login').hide();
      $('#loggedin').show();
    }
});  

如果我需要发布其他代码以寻求帮助,请告诉我!

2 个答案:

答案 0 :(得分:1)

您可以设置setInterval。每定义一个秒就会调用一个函数。

setInterval(function(){
   callAjax();
}, 1000);

var callAjax = function(){
  // Write you ajax here
}

答案 1 :(得分:1)

您可以使用setTimeout或setInterval实现此目的。

区别在于setInterval在指定的时间间隔内再次执行给定的功能再次(直到调用clearInterval()函数); setTimeout在指定的时间间隔后立即执行给定功能一次

完成响应的必要过程后。您可以在函数末尾递归调用makerequest()函数。该行中的注释提供了makerequest()函数,该函数将在10秒钟后再次调用。

function makerequest() {
    $.ajax({
        url: 'https://api.spotify.com/v1/me/player/currently-playing',
        headers: {
            'Authorization': 'Bearer ' + access_token
        },
        success: function(response) {
            userInfoPlaceholder.innerHTML = userInfoTemplate(response);
            console.log(response);
            $('#login').hide();
            $('#loggedin').show();
            //process with the response and other stuffs
            setTimeout(makerequest, 10000); //recursive call
        }
    });

}