Javascript 在函数内部调用函数,并且只有在函数结束后,才会调用其余代码
我想先调用getUser()函数(首先检查是否有用户登录),然后才调用函数代码的其余部分。 我有一些类似的函数,需要记录用户才能执行,我希望每次调用getUser()函数,而不是重复代码 我需要的函数顺序和解释: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) {
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)。