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

239
Vistas
Axios: esperar hasta que se cumpla la promesa

Usando axios en React donde estoy llamando a un punto final para obtener el token JWT de la siguiente manera

 fetchJwtToken = async () => { await axios.post( 'http://localhost:8080/authenticate', { username: 'username', password: 'password' } ).then( (res) => { console.log("JWT token fetch") console.log(res) this.setState({jwtToken: res.data.jwt}) } ) }

y luego llamar a esta función de la siguiente manera

 processImage = () => { this.fetchJwtToken(); console.log(this.state.jwtToken) //use the token to make further calls }

La función devuelve una promesa pendiente debido a la cual creo que await completa su ejecución. Esto da como resultado que el token JWT vacío se establezca en el estado.

Quiero esperar hasta que se devuelva el token para poder usarlo para futuras llamadas.

¿Cómo hacer que espere hasta que axios devuelva una promesa cumplida?

about 4 years ago · Santiago Gelvez
3 Respuestas
Responde la pregunta

0

ninguna respuesta aborda todo el problema

No necesita que fetchJwtToken sea asíncrono, simplemente puede devolver la promesa

 fetchJwtToken = () => { return axios.post( 'http://localhost:8080/authenticate', { username: 'username', password: 'password' } ).then( (res) => { console.log("JWT token fetch") console.log(res) this.setState({jwtToken: res.data.jwt}) } ) }

o, si es asíncrono

 fetchJwtToken = async () => { const res = await axios.post( 'http://localhost:8080/authenticate', { username: 'username', password: 'password' } ); console.log("JWT token fetch") console.log(res) this.setState({jwtToken: res.data.jwt}) }

de cualquier manera, donde lo llames, si necesitas esperar también

o

 processImage = () => { this.fetchJwtToken().then(() => { console.log(this.state.jwtToken) //use the token to make further calls } }

o

 processImage = async () => { await this.fetchJwtToken(); console.log(this.state.jwtToken) //use the token to make further calls }

Su elección, pero eso ahora funcionará como lo requiera

Nota: puede usar cualquiera de los dos primeros fetchJwtToken con cualquiera de los dos processImage , lo que quiera

about 4 years ago · Santiago Gelvez Denunciar

0

Como está usando await / async , le sugiero que cambie su código a esto:

 const response = await axios.post('http://localhost:8080/authenticate', { username: 'username', password: 'password' }); console.log(response.data); this.setState({jwtToken: response.data.jwt})

Si está más familiarizado con .then , la await anterior es equivalente a hacer esto:

 axios.post(...).then((response)=>{})
about 4 years ago · Santiago Gelvez Denunciar

0

Hola, debes enviar tu promesa en una variable como esta y si usas await , mejor no uses. .then debes hacer esto:

 fetchJwtToken = async () => { let anyThing = await axios.post( 'http://localhost:8080/authenticate', { username: 'username', password: 'password' } ) console.log(anyThing) }
about 4 years ago · Santiago Gelvez 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