【问题标题】:Returning true false from Promise [duplicate]从 Promise 返回 true false [重复]
【发布时间】:2020-12-24 09:11:19
【问题描述】:

我在 React Js 中有一个登录表单,它在单击按钮时提交用户详细信息。

我想要得到的是,当用户提交详细信息时,会调用用户数据的 API,该 API 返回用户列表。然后当代码获取用户列表时,我检查用户是否存在于列表中。

结果出来后我被卡住了。 我想 return true or falsesetstate 的错误,但我得到了未定义。

这是运行的函数

let handleSubmit = (e) => {
    e.preventDefault();
    let result;
    result = validateLogin(formDetails.name, formDetails.password);

    console.log("------------", result); //getting undefined instead of True or false 

}

验证登录:

let validateLogin = async (email, password) => {
    const response = await axios.get('https://fakestoreapi.com/users');
    if (response) {
        const k = response.data.find(user => {
            return user.email === email && user.password === password
        })
        if (k) {
  
            return true
        } else {
           
            return false
        }
    }

}

【问题讨论】:

  • result = await validateLogin(formDetails.name, formDetails.password);
  • 试过但得到一个错误Parsing error: 'await' is only allowed within async functions
  • 这说明了一切,对吧?让你的函数async...

标签: javascript reactjs ajax redux axios


【解决方案1】:

validateLogin是异步函数,所以你应该把handleSubmit设为异步函数,解析validateLogin得到结果。

let handleSubmit = async e => {
  e.preventDefault();
  let result = await validateLogin(formDetails.name, formDetails.password);

  console.log('------------', result); //getting undefined instead of True or false
};

【讨论】:

    【解决方案2】:

    在验证登录文件中, const response = await axios.get('https://fakestoreapi.com/users'); 没有执行。因此验证登录没有返回

    if(response) {

        `...`
    

    } else{

        `return something;`
    

    }

    尝试用 else 返回一些东西。

    【讨论】:

      猜你喜欢
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      • 2020-11-28
      • 2017-02-08
      • 2014-04-24
      • 2021-11-10
      • 1970-01-01
      相关资源
      最近更新 更多