我从 Spotify API 获取数据,但过了一会儿 运行 它标记了一个错误并开始一遍又一遍地记录相同的信息
I'm getting data from the Spotify API, but after a while running it marks an error and starts logging the same information over and over
我正在尝试了解 Spotify API。这个小代码控制台记录了用户正在收听的歌曲的当前节拍信息。
它工作正常,但几秒钟后 运行,它会记录一个错误,在该错误之后,它开始一遍又一遍地记录同一节拍的信息。有任何想法吗?这是我的代码,提前谢谢你!
var spotifyApi, spotifyToken;
var current, currentId, timeProgress, beatStart, beatsTotal;
var dataArray = [];
var beatsArray = [];
var spotifyToken = 'token';
spotifyApi = new SpotifyWebApi();
spotifyApi.setAccessToken( spotifyToken );
init();
function init(){
onReceiveCurrent();
}
function onReceiveCurrent ( err, data ) {
if (err) {
console.error(err);
return;
}
spotifyApi.getMyCurrentPlaybackState({}, onReceiveCurrent );
currentId = data.item.id;
timeProgress = data.progress_ms;
spotifyApi.getAudioAnalysisForTrack(currentId, onReceiveAnalysisCallback);
}
function onReceiveAnalysisCallback ( err, data ) {
if (err) {
console.error(err);
return;
}
for (var i=0; i<data.beats.length; i++) {
beatsArray[i] = data.beats[i].start;
}
var found = beatsArray.find(function (element) {
return element >= timeProgress/1000;
});
var a = beatsArray.indexOf(found);
beatStart = data.beats[a];
console.log(beatStart);
}
这是错误:
您不小心在 onReceiveCurrent
方法中创建了一个无限循环,该方法调用 getMyCurrentPlaybackState
,后者具有 onReceiveCurrent
的回调。它一遍又一遍地调用自己,直到达到 Spotify 的限制并且 returns 429。
回调应该是一个单独的函数,如下所示:
function callSpotify () {
spotifyApi.getMyCurrentPlaybackState({}, onReceiveStateCallback );
}
function onReceiveStateCallback(err, data) {
if (err) {
console.error(err);
return;
}
currentId = data.item.id;
timeProgress = data.progress_ms;
spotifyApi.getAudioAnalysisForTrack(currentId, onReceiveAnalysisCallback);
}
我正在尝试了解 Spotify API。这个小代码控制台记录了用户正在收听的歌曲的当前节拍信息。
它工作正常,但几秒钟后 运行,它会记录一个错误,在该错误之后,它开始一遍又一遍地记录同一节拍的信息。有任何想法吗?这是我的代码,提前谢谢你!
var spotifyApi, spotifyToken;
var current, currentId, timeProgress, beatStart, beatsTotal;
var dataArray = [];
var beatsArray = [];
var spotifyToken = 'token';
spotifyApi = new SpotifyWebApi();
spotifyApi.setAccessToken( spotifyToken );
init();
function init(){
onReceiveCurrent();
}
function onReceiveCurrent ( err, data ) {
if (err) {
console.error(err);
return;
}
spotifyApi.getMyCurrentPlaybackState({}, onReceiveCurrent );
currentId = data.item.id;
timeProgress = data.progress_ms;
spotifyApi.getAudioAnalysisForTrack(currentId, onReceiveAnalysisCallback);
}
function onReceiveAnalysisCallback ( err, data ) {
if (err) {
console.error(err);
return;
}
for (var i=0; i<data.beats.length; i++) {
beatsArray[i] = data.beats[i].start;
}
var found = beatsArray.find(function (element) {
return element >= timeProgress/1000;
});
var a = beatsArray.indexOf(found);
beatStart = data.beats[a];
console.log(beatStart);
}
这是错误:
您不小心在 onReceiveCurrent
方法中创建了一个无限循环,该方法调用 getMyCurrentPlaybackState
,后者具有 onReceiveCurrent
的回调。它一遍又一遍地调用自己,直到达到 Spotify 的限制并且 returns 429。
回调应该是一个单独的函数,如下所示:
function callSpotify () {
spotifyApi.getMyCurrentPlaybackState({}, onReceiveStateCallback );
}
function onReceiveStateCallback(err, data) {
if (err) {
console.error(err);
return;
}
currentId = data.item.id;
timeProgress = data.progress_ms;
spotifyApi.getAudioAnalysisForTrack(currentId, onReceiveAnalysisCallback);
}