为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

忽然笑 2022-12-09 15:35:41
我试图了解 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);

}


查看完整回答
反对 回复 2022-12-09
  • 1 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号