我在 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
}