我试图了解 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);}这是错误:
1 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
您不小心在该方法中创建了一个无限循环onReceiveCurrent,该getMyCurrentPlaybackState方法调用的回调为onReceiveCurrent. 它一遍又一遍地调用自己,直到达到 Spotify 的限制并返回 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);
}
添加回答
举报
0/150
提交
取消
