React native 无法异步并等待正常工作

React native 无法异步并等待正常工作,react-native,async-await,axios,React Native,Async Await,Axios,我正在尝试创建登录/创建帐户屏幕,但无法使我的async正常工作。Await不工作我的控制台在调用authToken之后打印出Undefined,然后打印“即将调用saveUserToken” 我在单击“创建帐户”按钮后调用此选项 async createUser() { if ((this.state.email != "" && this.state.fname != "" && this.state.lname != "" &&am

我正在尝试创建登录/创建帐户屏幕,但无法使我的async正常工作。Await不工作我的控制台在调用authToken之后打印出Undefined,然后打印“即将调用saveUserToken”

我在单击“创建帐户”按钮后调用此选项

async createUser() { 
        if ((this.state.email != "" && this.state.fname != "" && this.state.lname != "" && this.state.password != "" && this.state.confirmPassword != "")) {
            if (this.state.password == this.state.confirmPassword) {

                const authToken = await QueryHandler.createUser(this.state.email, this.state.password, this.state.fname, this.state.lname);
                console.log(authToken);

                console.log('About to call saveUserToken');
                const storeToken = await SecureDataStorage.saveUserToken(authToken);
                console.log(storeToken);

                ToastHandler.displayNormalMessage('Stored Token');
                const t = await SecureDataStorage.getUserToken();
                console.log('Got from SecureStorage:' + t)
                if(r) {
                    //Succesful result...
                    ToastHandler.displayNormalMessage('Account Created!');
                } else {
                    //Error...
                    ToastHandler.displayErrorMessage('Could not Create Account');
                }

                //Then navigate to login screen...

            } else {
                ToastHandler.displayErrorMessage('Passwords do not Match')
            }
        } else {
            ToastHandler.displayErrorMessage('Please Fill in all Fields');
        }
    }

This is my create user method.

static createUser(e, p, f, l) {
    result = '';
    axios.post((GRAPHQL_END_POINT), {
      query: print(Queries.CREATE_USER),
      variables: {
        firstName: f,
        lastName: l,
        email: e,
        password: p
      }
    })
      .then(res => {
        this.result = res.data.data.createUser.jwt;
        console.log(this.result);
        return true;
        // console.log(this.result);
      })
      .catch(err => {
        console.log(err)
        return false;
      })
      // return this.result;
  }

问题可能是at
saveUserToken()
。如果它是异步的,请确保它在返回结果之前等待结果。

问题可能是at
saveUserToken()
。如果它是异步的,请确保它在返回结果之前等待结果。

您应该尝试使createUser异步,这样就不会将承诺与异步语法混为一谈

    async createUser(e, p, f, l) {
    const res = await axios.post((GRAPHQL_END_POINT), {
      query: print(Queries.CREATE_USER),
      variables: {
        firstName: f,
        lastName: l,
        email: e,
        password: p
      }
    })
    console.log('res', res)
    return res.data.data.createUser.jwt;
  }

您应该尝试使createUser异步,这样就不会将承诺与异步语法混为一谈

    async createUser(e, p, f, l) {
    const res = await axios.post((GRAPHQL_END_POINT), {
      query: print(Queries.CREATE_USER),
      variables: {
        firstName: f,
        lastName: l,
        email: e,
        password: p
      }
    })
    console.log('res', res)
    return res.data.data.createUser.jwt;
  }

saveUserToken目前不是异步的,但我认为应该是异步的。无论何时我将其设置为异步,我都无法构建应用程序并获取带有意外令牌的SyntaxError。saveUserToken的预期返回是什么?saveUserToken当前不是异步的,但我认为应该是异步的。无论何时我将其设置为异步,我都无法构建应用程序并获得带有意外令牌的SyntaxError。saveUserToken的预期返回是什么?我得到的错误与另一个答案相同。我不能建造。我认为它不喜欢异步函数调用其他异步函数。我想我需要对承诺做点什么,但我不知道如何写这些承诺。我得到的错误与另一个答案相同。我不能建造。我认为它不喜欢异步函数调用其他异步函数。我想我需要做一些承诺,但我不知道如何写这些承诺。