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

242
Vistas
Pasar variables externas a la llamada Axios.get().then()

Quiero llamar a un punto final usando Axios, luego hacer algo con los datos de respuesta y una variable que se definió antes de la llamada. Sé cómo pasar datos a la devolución de llamada al crear la función que devuelve la promesa yo mismo, pero dado que Axios es un código externo y parece que no puedo encontrar ninguna opción para pasar datos adicionales en los documentos de Axios o en la configuración . ¿Hay alguna otra forma de hacer que esto funcione, además de enviar el valor como datos al servidor y hacer que el servidor responda dentro de la respuesta o usar una solución fea usando la variable global de la window ?

 const animate = true; // The variable to be passed axios.get('/endpoint.json') .then(function(response, animate) { // This doesn't work... if (response.data.coordinates) { console.log(animate); // ...because this is undefined setLocation('takeoff_location', response.data.coordinates, animate); // variable and response data need to be passed to this call } });
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Esto crea una nueva variable animate , completamente ajena a la ya definida:

 function(response, animate)

Esta nueva variable "sombrea" la que está en el ámbito superior, por lo que dentro de esta función cualquier referencia para animate solo hace referencia a esta nueva variable. Lo cual no está definido porque Axios (específicamente la Promise devuelta por .get() ) no tiene motivos para pasar un segundo valor a esta devolución de llamada.

No sombrees la variable:

 function(response)

Luego, dentro de la función, cualquier referencia a animate hará referencia a la variable en el ámbito superior.

about 4 years ago · Juan Pablo Isaza Denunciar

0

el .then() es una promesa y tiene acceso a cualquier variable fuera del alcance (como un cierre). Si desea encapsular la llamada API, envuelva todo en una función y los argumentos van allí.

 const doRequest = function(animate) { axios.get('/endpoint.json').then(function(response) { if (response.data.coordinates) { setLocation('takeoff_location', response.data.coordinates, animate); } }); }; doRequest(250); doRequest(500);

Tenga en cuenta que esto hará 2 solicitudes de animación rápidamente en sucesión. Si desea "esperar" a que el otro termine primero, debe hacer esto: (tenga en cuenta que ahora estoy devolviendo la solicitud axios de la función). Esto significa que se devuelve el objeto de promesa y ahora puede encadenar más funciones .then() en el "exterior" de la función, lo que sucederá solo cuando finalice la solicitud.

 const doRequest = function(animate) { return axios.get('/endpoint.json').then(function(response) { if (response.data.coordinates) { setLocation('takeoff_location', response.data.coordinates, animate); } }); }; doRequest(250).then(function() { // this will happen when the outer API call finishes doRequest(500); });
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