Я работаю над проектом с помощью веб-API Spotify, и у меня возникают проблемы с ограничением скорости.
У меня есть массив из около 500 художников, и я хочу пройтись по массиву, чтобы получить фотографию для каждого художника из API Spotify с помощью axios. Чтобы избежать ограничений скорости, я использую setTimeout на карте, поэтому между каждым вызовом API есть задержка в полсекунды.
То, как я его сейчас настроил, карта срабатывает одновременно, и меня ограничивают.
Вот код, с которым я работаю. noPhoto - это массив имен художников. Спасибо!
const addArtistSpotifyPhoto = (req, res) => {
console.log(noPhoto);
noPhoto.map(e => {
console.log(e);
setTimeout(() => {
axios
.get(
`https://api.spotify.com/v1/search?q=${e
.split(' ')
.join('%20')}&type=artist&limit=1`,
{
headers: { Authorization: `Bearer ${req.user.accessToken}` }
}
)
.then(response => {
console.log(e, response.data.artists.items.images);
})
.catch(console.log);
}, 500);
});
};
Редактирование решения:
Большой крик на ответ Матти Прайс. Вот как он предложил мне это исправить, и это работает:
const addArtistSpotifyPhoto = (req, res) => {
console.log(noPhoto);
noPhoto.map((e, i) => {
console.log(e);
setTimeout(() => {
axios
.get(
`https://api.spotify.com/v1/search?q=${e
.split(' ')
.join('%20')}&type=artist&limit=1`,
{
headers: { Authorization: `Bearer ${req.user.accessToken}` }
}
)
.then(response => {
console.log(e, response.data.artists.items.images);
})
.catch(console.log);
}, 500 * i);
});
};