我是一个新手,我需要得到所有艺人的结果,然后每个艺人都有封面、专辑和艺人信息的api url.所以有人能告诉我,在这个api调用中,我如何做一个连锁请求。
"result": [
{
"id_artist": 70170,
"artist": "Ameritz Karaoke Crew",
"cover": "https://api.happi.dev//v1/music/cover/70170/artist",
"api_artist": "https://api.happi.dev/v1/music/artists/70170",
"api_albums": "https://api.happi.dev/v1/music/artists/70170/albums"
},
我的目的是创建一个函数,从你的结果中获取项目,并填充 cover
, api_artist
和 api_albums
属性和各自的数据。
所以这里 populateArtistWithApiData
需要 artist
对象,进行必要的请求并填充该对象。
Promise.all
允许我等待所有艺术家的所有请求完成后再解析填充艺术家的数组。
function populateArtistWithApiData(artist) {
return new Promise((resolve, reject) => {
Promise
.all([
axios.get(artist.cover),
axios.get(artist.api_artist),
axios.get(artist.api_albums),
])
.then(([cover, api_artist, api_albums]) => {
artist.cover = cover;
artist.api_artist = api_artist;
artist.api_albums = api_albums;
resolve(artist);
});
});
}
Promise.all(result.map((artist) => populateArtistWithApiData(artist))).then(
(populatedArtists) => {
// There you have the same `artist` objects as before with the properties `cover`,
// `api_artist`, `api_albums` populated with the data
}
);