我在 for 循环中发出多个 ajax 请求,并在每个 ajax 请求中发出 this.setState({bla bla}) 。如何仅在 last this.setState 完成后才运行回调函数,而不是每个?
getAllSongsFromPlaylists(token, playlists) {
for (let i = 0; i < playlists.length; i++) {
//console.log(id);
$.ajax({
url: "https://api.spotify.com/v1/playlists/"+playlists[i]+"/tracks",
async: true,
type: "GET",
beforeSend: xhr => {
xhr.setRequestHeader("Authorization", "Bearer " + token);
},
error: error => {
console.log(error);
},
success: data => {
// Checks if the data is not empty
if(!data) {
this.setState({
no_data: true,
});
return;
}
var songs = this.state.songs;
for (var i = 0; i < data.items.length; i++) {
songs.add(data.items[i].track.name);
}
}
});
}
//I WANT A FUNCTION HERE THAT WILL ONLY RUN AFTER ALL THE AJAX CALLS ARE DONE
}