Saltar al contenido

Devolver datos de la API de Axios

Esta sección fue analizado por expertos así se asegura la veracidad de este post.

Solución:

El problema es que el original axiosTest() la función no está devolviendo la promesa. Aquí hay una explicación extendida para mayor claridad:

function axiosTest() 
    // create a promise for the axios request
    const promise = axios.get(url)

    // using .then, create a new promise which extracts the data
    const dataPromise = promise.then((response) => response.data)

    // return it
    return dataPromise


// now we can use that data from the outside!
axiosTest()
    .then(data => 
        response.json( message: 'Request received!', data )
    )
    .catch(err => console.log(err))

La función se puede escribir de manera más sucinta:

function axiosTest() 
    return axios.get(url).then(response => response.data)

O con async/await:

async function axiosTest() 
    const response = await axios.get(url)
    return response.data

  • Guía sobre el uso de promesas
  • Información sobre funciones asíncronas

puede completar los datos que desee con una función de devolución de llamada simple, digamos que tenemos una lista llamada lst que queremos llenar, tenemos una función que pupula pupula lista,

const lst = [];  
const populateData = (data) => lst.push(data) 

ahora podemos pasar la función de devolución de llamada a la función que realiza la llamada axios y podemos completar la lista cuando obtengamos datos de la respuesta.

ahora hacemos nuestra función que hace la solicitud y pasa populateData como una función de devolución de llamada.

function axiosTest (populateData) 
        axios.get(url)
       .then(function(response)
               populateData(response.data);
        )
        .catch(function(error)
               console.log(error);
         );
   

Sé que esta publicación es antigua. Pero he visto varios intentos de personas que intentan responder usando async y esperan pero se equivocan. Esto debería aclararlo para cualquier referencia nueva.

async function axiosTest() 
      try 
        const data:response = await axios.get(url) //use data destructuring to get data from the promise object
        return response
      

      catch (error) 
        console.log(error);
      
    

Si posees algún recelo y forma de limar nuestro enunciado puedes ejecutar una crítica y con placer lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *