gpt4 book ai didi

reactjs - 如何返回axios的响应作为返回

转载 作者:行者123 更新时间:2023-12-03 13:16:45 24 4
gpt4 key购买 nike

我想返回axios的响应,但返回的响应总是未定义:

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));

控制台始终记录为未定义。他们有什么办法返回这个响应吗?

最佳答案

console.log 不会等待函数完全完成后再进行记录。这意味着您必须使 wallet.registerUser 异步,有两种主要方法可以做到这一点:

  1. 回调 -这是当您将函数作为参数传递到现有函数时,该函数将在 axios 调用完成后执行。以下是它如何与您的代码配合使用:

    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 -最简单的方法是将 async 放在函数名称前面。这将使函数返回的任何内容都以 promise 的形式返回。这就是它在您的代码中的工作方式:

     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);
    });

以下是有关异步函数的更多信息:

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

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

关于reactjs - 如何返回axios的响应作为返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45620694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com