我正在玩LastFM API并尝试在我通过Spotify和ITunes播放曲目时更新最近播放的曲目列表。我已经通过JS和Handlebars的组合使用初始代码,以便在页面加载时加载静态的轨道列表,这在页面加载时是最新的。
但是我想在不刷新页面的情况下选择新曲目时更新列表。所以我想我可以使用setInterval函数每5秒左右调用一次原始函数。但是由于某种原因,我的setInterval函数只在页面加载时运行一次。
我知道这是一个非常简单的错误,但我无法理解为什么?帮助!
var clientname = {};
clientname.website = (function(){
var
initPlugins = function(){
var setupLastFM = (function(){
/* Create a cache object */
var cache = new LastFMCache(),
/* Create a LastFM object */
lastfm = new LastFM({
apiKey : '6db1989bd348bf91797bad802c6645d8',
apiSecret : '155270f02728b1936ed7699e9f7b8de9',
cache : cache
}),
attachTemplate = function(data, handlebarsTemplateID){
var template = Handlebars.compile(handlebarsTemplateID.html());
$(".container").append(template(data));
}
/* Load some artist info. */
lastfm.user.getRecentTracks({user: 'jimmersjukebox'}, {
success: function(data){
var trackData = data.recenttracks.track,
tracks = $.map(trackData, function(track) {
if(track['@attr']){
var isCurrentTrack = true;
}
return {
currenttrack: isCurrentTrack,
song: track.name,
artist: track.artist['#text']
};
});
attachTemplate(tracks, $("#trackInfo"));
}, error: function(code, message){
}}),
intervalID = window.setInterval(console.log("test"), 1000);
}());
}
return{
init: function(){
initPlugins();
}
};
})();
$(window).load(clientname.website.init);
答案 0 :(得分:1)
您正在立即运行console.log("test")
。尝试将其封装在其他函数中,但不要通过包含括号()
来实例化它。
intervalID = window.setInterval(function(){
console.log("test");
}, 1000);
答案 1 :(得分:0)
您不应该在setInterval中调用该函数。它需要回调。
跟贝拉说话一样
intervalID = window.setInterval(function(){
console.log("test");
}, 1000);
答案 2 :(得分:0)
您使用函数调用而不是函数引用作为setInterval的第一个参数。这样做:
function test() {
console.log("test");
}
intervalID= window.setInterval(test, 1000);
或者您也可以这样做:
intervalID= window.setInterval( function() {
console.log("test!");
}, 1000);
答案 3 :(得分:0)
我建议使用setTimeout:使用一个函数来包含setTimeout,并在函数中调用它:
$(function() {
var current = $('#counter').text();
var endvalue = 50;
function timeoutVersion() {
if (current === endvalue) {return false;} else {
current++;
$('#counter').text(current);
}
setTimeout(timeoutVersion, 50);
}
$('a').click(function() {
timeoutVersion();
})
})