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

203
Vistas
JavaScript, el resto de la función se ejecuta antes de las llamadas a la API

Tengo un problema con una función simple en la que quiero llamar a una API y luego hacer algo con la respuesta. Básicamente, solo quiero establecer el estado de mi componente de reacción en la respuesta que recibo y luego navegar a la otra página. El problema es que mi código ejecuta otra parte de la función antes de que finalice una llamada a la API, y termino en otra página con consola.log de indefinido

Ahí está mi función:

 const startNewGame = () => { GameService.startGame() .then((response) => { setGame(response.data); console.log(game); navigate('intro'); }) .catch((e) => { console.log(e); }); };

Puedo envolver mi navegación en if(!game !== undefined) pero luego tengo que hacer clic dos o más veces en un botón.

Gracias a todos por la ayuda chicos :)

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

0

Probablemente haga varias cosas incorrectas al mismo tiempo, por lo que comprender qué es exactamente lo que está mal puede llevar algo de tiempo. Siga estos pasos para depurar su código:

  1. Haga que cada llamada .then haga solo una cosa (y respete ese principio en otros casos). Puedes encadenar tantos como quieras. Además, podría devolver datos de uno .then al siguiente, por lo que su código podría verse así:
 GameService.startGame() .then(response => response.data) .then(data => { setGame(data) }) .then(() => { console.log(game); navigate('intro'); }) .catch((e) => { console.log(e); });
  1. Comprenda la composición de sus componentes. ¿Dónde exactamente estás guardando tu respuesta? ¿Es solo el componente local useState o algún estado de Context Api que envuelve la aplicación? Cuando navegue a "otra página", su estado de "página actual" no estará disponible para "otra página" a menos que mantenga los datos en algún lugar del árbol cuando ambas páginas puedan acceder a eso.

  2. Para obtener más referencias, tenga en cuenta que setGame es asincrónico, por lo que debe esperar a que se actualice el estado para asegurarse de que esté actualizado.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Prueba esto:

 const startNewGame = () => { GameService.startGame() .then((response) => { setGame(response.data); // game is not updated yet // console.log(game); <- Remove this line // navigate('intro'); <- Remove this line }) .catch((e) => { console.log(e); }); }; useEffect(()=>{ if(game !== undefined){ navigate('intro') } }, [game])
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