我正在从 Spotify API 获取数据,但运行一段时间后它会标记错误并开始一遍又一

我试图了解 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);

}

这是错误:

http://img3.mukewang.com/6392e566000111e114180123.jpg

忽然笑
浏览 127回答 1
1回答

慕尼黑8549860

您不小心在该方法中创建了一个无限循环onReceiveCurrent,该getMyCurrentPlaybackState方法调用的回调为onReceiveCurrent. 它一遍又一遍地调用自己,直到达到 Spotify 的限制并返回 429。回调应该是一个单独的函数,如下所示:function callSpotify () {&nbsp; spotifyApi.getMyCurrentPlaybackState({}, onReceiveStateCallback );}function onReceiveStateCallback(err, data) {&nbsp; if (err) {&nbsp; &nbsp; console.error(err);&nbsp; &nbsp; return;&nbsp; }&nbsp; currentId = data.item.id;&nbsp; timeProgress = data.progress_ms;&nbsp; spotifyApi.getAudioAnalysisForTrack(currentId, onReceiveAnalysisCallback);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript