Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

183
Vistas
Usando datos de retorno de una función asíncrona, en otra función

Estoy haciendo un pequeño análisis de datos de los datos de chess.com

tengo este codigo

 const getUsernames = async function() { let response = await chessAPI.getCountryPlayers('RE') names = [...response.body.players] //console.log(names) return names } const grabPlayerScores = async function() { let players = getUsernames() // let playerStats = []; for (i = 0; i = players.length; i++) { let data = await chessAPI.getPlayerStats(i) console.log(data) } } grabPlayerScores();

No puedo hacer que la otra función espere el regreso de la primera. Sé que debería usar promesas o estructurar mi otra función de manera diferente, pero todavía me estoy acostumbrando a este tipo de funciones.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Como práctica recomendada, debe asegurarse de que todas sus funciones devuelvan un valor. Use const para las variables que no cambiarán y let para las variables que absolutamente cambiará. Tenga cuidado con name = ... donde no escribió const o let , ya que esto convierte names en un global -

 const getUsernames = async function() { const response = await chessAPI.getCountryPlayers('RE') return response.body.players // <- probably no need to copy }
 const grabPlayerScores = async function() { const players = await getUsernames() return Promise.all(players.map(p => chessAPI.getPlayerStats(p))) }

Ahora grabPlayerScores será una promesa que contiene una matriz de todos los puntajes de los jugadores:

 grabPlayerScores().then(console.log).catch(console.error)
 [ ..., ... ,... ]

¿Quizás desee que los datos del jugador se combinen con los datos de la puntuación en el resultado final?

 const grabPlayerScores = async function() { const players = await getUsernames() return Promise.all(players.map(async p => ({ player: p, scores: await chessAPI.getPlayerStats(p) }))) }
 grabPlayerScores().then(console.log).catch(console.error)
 [ { player: "alice", scores: ... }, { player: "brenda", scores: ... }, { player: "catherine", scores: ... } ]

Otra buena práctica es hacer que sus funciones tomen parámetros. Esto los hace más reutilizables en otras áreas de su programa -

 const getUsernames = async function(countryCode) { const response = await chessAPI.getCountryPlayers(countryCode) return response.body.players } const grabPlayerScores = async function(countryCode) { const players = await getUsernames(countryCode) return Promise.all(players.map(async p => ({ player: p, scores: await chessAPI.getPlayerStats(p) }))) }

Ahora pasa "RE" como argumento a su función, lo que le permite reutilizar fácilmente esta función para otros países:

 grabPlayerScores("RE").then(console.log).catch(console.error)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe agregar otra await en su función grabPlayerScores para esperar a que finalice getUsernames .

 const grabPlayerScores = async function() { // Add an 'await' here let players = await getUsernames(); for(let i = 0; i = players.length; i++) { let data = await chessAPI.getPlayerStats(i) console.log(data) } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Cambié un poco en tu código,

 const grabPlayerScores = async function () { let players = await getUsernames(); for (i = 0; i = players.length; i++) { let data = await chessAPI.getPlayerStats(players[i]); console.log(data) } }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda