[英]setInterval function only running once
我目前正在使用LastFM API,並試圖獲取最近播放的曲目列表,以便在通過Spotify和iTunes播放曲目時進行更新。 我已經通過JS和Handlebars的結合使用了初始代碼,以便在頁面加載時加載靜態的軌道列表,這是在頁面加載時最新的。
但是,我希望列表在我選擇新曲目時更新而不刷新頁面。 所以我以為我可以每5秒左右使用setInterval函數調用我的原始函數。 但是由於某種原因,我的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);
您正在立即運行console.log("test")
。 嘗試將其封裝在另一個函數中,但不要通過包含括號()
實例化它。
intervalID = window.setInterval(function(){
console.log("test");
}, 1000);
您不應在setInterval中調用該函數。 它需要一個回調。
像吼叫
intervalID = window.setInterval(function(){
console.log("test");
}, 1000);
您將函數調用而不是函數引用用作setInterval的第一個參數。 像這樣做:
function test() {
console.log("test");
}
intervalID= window.setInterval(test, 1000);
或者您也可以這樣做:
intervalID= window.setInterval( function() {
console.log("test!");
}, 1000);
我建議使用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();
})
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.