¡Soy un principiante en js! ¿Hay alguna forma de dejar que el retorno espere a que terminen ambos bucles? Probé todas las soluciones aquí " https://stackoverflow.com/questions/27914209/how-could-i-run-a-function-after-the- finalización-de-a-for-loop-in-node-js" pero creo que ninguno de ellos funciona porque es un bucle anidado
function StatisticsPerGameId (IDs){ console.log(IDs) let doubldoubl={}; for (let i=0; i <IDs.length;i++){ const options = { method: 'GET', url: 'https://api-nba-v1.p.rapidapi.com/players/statistics', params: {game: IDs[i]}, headers: { 'X-RapidAPI-Host': 'api-nba-v1.p.rapidapi.com', 'X-RapidAPI-Key': 'afgsdgbsdghbrynhndf6hn6dfhndfhn61dhddfhn' } }; axios.request(options).then(function (response) { console.log(response.data.response[0].points) for(let j in response.data.response){ let dd = 0; if( response.data.response[j].points >= 10){dd=dd+1;}; if( response.data.response[j].totReb >= 10){dd=dd+1;}; if(dd == 2 ){ doubldoubl=doubldoubl+{ name:response.data.response[j].player.firstname +" "+ response.data.response[j].player.lastname, teamOfplayer : response.data.response[j].team.name, teamOfplayerlogo:response.data.response[j].team.logo, } }; dd = 0 ; } }).catch(function (error) { console.error(error); }); } return doubldoubl; }axios.request() devuelve una promesa, que se resolverá de forma asincrónica cuando se obtenga la solicitud. Llamar .then(function () {...}) llamará a esa función cuando la solicitud esté lista.
La mejor manera de esperar todas las solicitudes es pasarlas todas a Promise.all() :
function StatisticsPerGameId (IDs){ ... const promises = [] for (let i=0; i <IDs.length;i++){ ... const promise = axios.request(...).then(function (response) {...}).catch(function (error) {...}); promises.push(promise) } return Promise.all(promises).then(function () { return doubldoubl; }); } Tenga en cuenta que esto hará que StatisticsPerGameId devuelva una promesa para el resultado, que de manera similar deberá esperarse de forma asíncrona.
Consulte https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises#composition