Я пытаюсь создать обещание с помощью зацикленного запроса API к Spotify. Spotify работает так, что я могу получать только 100 треков за раз, поэтому я проверяю, есть ли еще треки, и повторно запускаю функцию, пока все треки не будут добавлены в список «элементов». Прямо сейчас обещание разрешается после 1 запроса, но мне нужно разрешить после того, как все запросы сделаны. Мой код:
function getItems(myUrl) {
return new Promise((resolve, reject) => {
let items = []
request.post(authOptions, function(error, response, body) {
if (!error && response.statusCode === 200) {
// use the access token to access the Spotify Web API
var token = body.access_token;
var options = {
url: myUrl,
headers: {
'Authorization': 'Bearer ' + token
},
json: true
};
request.get(options, function(error, response, body) {
if (error) return reject(error);
for (var item of body['items']) {
items.push(item)
}
if (response.body.next != null) {
getItems(response.body.next)
}
resolve(items)
})
} else {
reject(error)
}
})
return items
})
}
getItems('https://api.spotify.com/v1/playlists/1vZFw9hhUFzRugOqYQh7KK/tracks?offset=0')
.then(res => console.log(res))