web-dev-qa-db-fra.com

comment retourner la réponse des axios en retour

Je veux retourner la réponse d'axios mais toujours la réponse qui est retournée n'est pas définie:

wallet.registerUser=function(data){
axios.post('http://localhost:8080/register',{
phone:data.phone,
password:data.password,
email:data.email
}).then(response =>{
  return response.data.message;
  console.log(response.data.message);
}).catch(err =>{
  console.log(err);
})
}

console.log(wallet.registerUser(data));

La console se connecte toujours comme non définie. Est-ce leur façon de retourner cette réponse.

12
Candy

console.log n'attendra pas que la fonction soit complètement terminée avant de l'enregistrer. Cela signifie que vous devrez faire wallet.registerUser asynchrone, il existe deux façons principales de procéder:

  1. Rappel - c'est lorsque vous passez une fonction en tant que paramètre dans votre fonction existante qui sera exécutée une fois votre appel axios terminé. Voici comment cela fonctionnerait avec votre code:

    wallet.registerUser=function(data, callback){
      axios.post('http://localhost:8080/register',{
        phone:data.phone,
        password:data.password,
        email:data.email
      }).then(response =>{
        callback(response.data.message);
        console.log(response.data.message);
      }).catch(err =>{
        console.log(err);
      })
    }
    
    wallet.registerUser(data, function(response) {
      console.log(response)
    });
    
  2. Promise - La façon la plus simple de le faire est de mettre async devant le nom de votre fonction. Cela rendra tout retour de la fonction sous forme de promesse. Voici comment cela fonctionnerait dans votre code:

     wallet.registerUser=async function(data){
      axios.post('http://localhost:8080/register',{
        phone:data.phone,
        password:data.password,
        email:data.email
      }).then(response =>{
        return response.data.message;
        console.log(response.data.message);
      }).catch(err =>{
        console.log(err);
      })
    }
    
    wallet.registerUser(data).then(function(response) {
      console.log(response);
    });
    

Voici quelques informations supplémentaires sur les fonctions asynchrones:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

https://developer.mozilla.org/en-US/docs/Glossary/Callback_function

13
Showard180