如何在nodejs中从Spotify API获取播放列表的每一页
How to get every page of playlists from Spotify API in nodejs
我正试图从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调用自己。
更新后的代码已添加到上述问题中。
相关文章:
- Javascript::通过HTML5音频播放器播放列表播放多个音频文件
- Sequelize:属性之间的命名冲突'播放列表'以及关联'播放列表'
- 使用SoundJS播放列表
- 对Soundcloud自定义播放器播放列表的顺序进行排序
- Jplayer播放列表未定义
- 获取youtube播放列表的参考
- 从XML中获取播放列表项的新原型
- 检索特定播放列表缩略图时,它不会获取视频的视图和描述
- 使用开发者 API 获取 Soundcloud “喜欢”的播放列表
- 需要将播放列表中的歌曲名称获取到带有 php&javascript 的“正在播放”横幅中
- 获取所有视频ID'使用YouTube API将从YouTube播放列表转换为PHP数组
- Spotify API-获取播放列表中每个曲目的曲目URI
- 从url获取youtube播放列表
- 通过用户名从Spotify获取公共播放列表
- SpotifyAPI1.0.0获取给定曲目集的播放列表图像
- 从jPlayer播放列表的JSON文件中获取信息
- 获取当前用户的星光播放列表或库和曲目/艺术家
- 如何使用javascript API和json获取youtube播放列表
- 如何在nodejs中从Spotify API获取播放列表的每一页
- 从Spotify应用API获取用户星级播放列表