Javascript 在函数内部调用函数,并且只有在函数结束后,才会调用其余代码

Javascript 在函数内部调用函数,并且只有在函数结束后,才会调用其余代码,javascript,reactjs,function,react-native,asynchronous,Javascript,Reactjs,Function,React Native,Asynchronous,我想先调用getUser()函数(首先检查是否有用户登录),然后才调用函数代码的其余部分。 我有一些类似的函数,需要记录用户才能执行,我希望每次调用getUser()函数,而不是重复代码 我需要的函数顺序和解释: addComment=()=>{ this.getUser()//检查用户是否使用getItem和setState userOnline boolean登录 ///只有在getUser完成后,才会继续使用此代码- if(this.state.userOnline==true) {

我想先调用getUser()函数(首先检查是否有用户登录),然后才调用函数代码的其余部分。 我有一些类似的函数,需要记录用户才能执行,我希望每次调用getUser()函数,而不是重复代码

我需要的函数顺序和解释:

addComment=()=>{
this.getUser()//检查用户是否使用getItem和setState userOnline boolean登录
///只有在getUser完成后,才会继续使用此代码-
if(this.state.userOnline==true)
{
///获取和其他功能代码
this.setState({userOnline:false});
}
否则{
Alert.Alert(“您必须登录才能发布评论”);
返回;
}

}
如果您的
getUser()
是异步的,那么您需要使您的
addComment
函数异步,考虑到它正在执行
setState()
。然后,在执行其余代码之前,需要等待getUser()

addComment = async () => {
    await getUser();
    //... rest of the code

}

您可以使用.then,因为您使用的是异步函数。GetUsers是异步的,因此它返回一个承诺。例如:

async function f() {
  return 1;
}
f().then(alert);
所以试试这个:

this.getUser().then(
    if (this.state.userOnline == true)
    {
        /// fetch and other function code
        this.setState({userOnline : false});
    }
    else {
         Alert.alert("You have to be logged-in to publish comments"); 
         return;
    }
 }
)

您得到的错误是什么?请发布您的getUser()函数它可以是-async addComment(){await getUser();/…代码的其余部分}?是的,但您需要在构造函数中绑定它。this.addComment=this.addComment.bind(this)。