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

139
Vistas
Cómo esperar a que Promise.all se resuelva antes de devolver valores en la función asíncrona (expresar JS)

Soy bastante nuevo en JS y especialmente en la programación asíncrona. Estoy tratando de crear una aplicación Express + React que muestre la información de un usuario de gitHub (incluidos algunos repositorios con 5 confirmaciones).

Para hacer esto último, estoy usando Promise.all y map para obtener las confirmaciones de cada repositorio en una matriz y devolver una matriz con las confirmaciones agregadas a cada repositorio.

Cuando consuelo. registro el nuevo repositorio en la función de mapa, funciona, pero cuando intento devolver la matriz, los objetos no están definidos.

Supongo que esto se debe a que la devolución se está ejecutando antes de que se hayan resuelto las Promesas. ¿Puede alguien ayudarme con esto?

 //takes a username and collection of repos and finds their commits using fetch to github API. Returns the array of repos with their commits as a new property const getGitHubCommits = async (username, repos) => { try { const repositories = await Promise.all( repos.map(async (repo) => { fetch(`https://api.github.com/repos/${username}/${repo.name}/commits?per_page=5`).then(response => response.json()) .then(async response => { repo.commits = response.slice(0, 5) console.log(repo) return await repo }) }) ); console.log(repositories) return repositories } catch (error) { console.log(error) return "No commits found found" } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No necesita async / await aquí en absoluto. Tan pronto como coloque async delante de una función, la función devolverá una promesa y deberá resolver esa promesa en ese momento.

Aquí hay una versión mejor:

 const getGitHubCommits = (username, repos) => { return Promise.all( repos.map((repo) => fetch( `https://api.github.com/repos/${username}/${repo.name}/commits?per_page=5` ) .then((response) => response.json()) .then((response) => { repo.commits = response.slice(0, 5) return repo }) ) ) }

Esto es mucho más limpio. Más tarde necesitas resolver la promesa:

 getGitHubCommits('...', ['...']) .then((result) => { console.log(result) }) .catch((err) => { console.log(err) })

O puede usar aquí async / await si lo llama dentro de una función asíncrona:

 try { let commits = await getGitHubCommits('..', ['..']) console.log(commits) } catch (err) { console.log(err) }
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