如何在 ajax 请求/this.setStates 的 for 循环之后调用函数?

时间:2021-08-01 17:28:05

标签: reactjs ajax

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

0 个答案:

没有答案