如何在nodejs中从Spotify API获取播放列表的每一页

How to get every page of playlists from Spotify API in nodejs

本文关键字:播放列表 获取 一页 API Spotify nodejs 中从      更新时间:2023-09-26

我正试图从spotify API获取用户的所有播放列表,并将它们放在一个选择列表中。我一次只能访问20个播放列表,所以我创建了一个while循环,使用next page属性浏览播放列表的每一页,但由于某种原因,它会导致无限循环。我猜问题出在uri=playlist.next行,如下所示。任何帮助都将不胜感激,以下是代码:

        //Request the user's information...
        $.ajax({
            url: 'https://api.spotify.com/v1/me',
            headers: {
              'Authorization': 'Bearer ' + access_token
            },
            //... Create a list of the user's playlists
            success: function(user) {
              var playlistURL = 'https://api.spotify.com/v1/users/' + user.id + '/playlists';
              appendPlaylists(playlistURL);
              function appendPlaylists(nextURL) {
                if (nextURL == null) {
                  return;
                }
                //Append playlists to the menu
                $.ajax({
                    url: nextURL,
                    headers: {
                      'Authorization': 'Bearer ' + access_token
                    },
                    success: function(playlists) {
                      console.log(nextURL);
                      var i = 0;
                      while (playlists.items[i] != null) {
                        console.log(playlists.items[i].name);
                        $('.all-playlists').append('<option value="' + playlists.items[i].href + '">' + playlists.items[i].name + '</option>')
                        i++;
                      }
                      appendPlaylists(playlists.next);
                    }    
                });
              }
              //Load the logged in div.
              $('#login').hide();
              $('#loggedin').show();
            }
        });

感谢JMPerez的回答:

我认为问题在于,当ajax请求是异步的时,您认为它们是阻塞的。与其让请求处于无限循环中,不如在上一个请求的成功回调中向下一个块发出请求。创建一个函数,使请求接受偏移量(或"下一个"URL),然后在该函数内,当请求成功时,用下一个区块的URL调用自己。

更新后的代码已添加到上述问题中。