Если я правильно понял, вы хотите выполнить как function1
, так и function2
, а затем выполнить проверку. Поскольку setState
является асинхронным, вы можете использовать опцию обратного вызова для разрешения обещания для каждой функции, а затем на function3
дождитесь разрешения обоих обещаний, а затем выполните проверку.
См. Этот пример :
state={
a: false,
b: false
}
function1 = () => {
return new Promise((resolve, reject) => {
this.setState({a: true}, () => resolve());
//do something over here to wait until setState finishes
//and then return to caller function
}
}
function2 = () => {
return new Promise((resolve, reject) => {
this.setState({b: true}, () => resolve());
//do something over here to wait until setState finishes
//and then return to caller function
}
}
function3 = () =>{
Promise.all([function1(), function2()]).then(() => {
if(this.state.a && this.state.b === true){
//perform something
}
});
}
Надеюсь, это поможет!