這裏是我當前的代碼:jQuery的 - 可變間隔
$(document).ready(function() {
// set variables
var delay = 3000;
setInterval(function() {
// perform AJAX call
var req = $.ajax({
url: "view/jquery/jq.refresh.php",
dataType: "json"
});
// process data from json
req.done(function(data) {
$("#now_playing").html(data.song);
$("#queue_list").html(data.queue);
delay = data.time;
});
}, delay);
});
...按計劃它不工作。
這個想法是通過AJAX從數據庫中檢索可變延遲(歌曲的長度)。並將延遲(歌曲長度)放入setInterval
,這樣腳本會根據正在播放的歌曲長度以可變間隔循環播放,希望可以減少服務器/數據庫負載。
我確定從數據庫中檢索到延遲的正確值,因爲添加console.log(date.time);
可以顯示歌曲的長度。
一個理論,我有爲什麼我的代碼將無法工作,setInterval
在實際處理代碼之前讀取其ms值,因此它總是設置爲3000
。 另一個理論是delay = data.time
不會更改delay
值,因爲它是在腳本開始處設置的全局變量。
那麼我有什麼選擇來實現可變間隔而不會崩潰/凍結瀏覽器?