Я пытаюсь написать код, который запускает асинхронную функцию, и когда это выполнено, он запускает другой кусок кода.
Я попытался поместить асинхронную функцию в обещание (как видно из кода ниже)и использование метода then
безуспешно.
то, что происходит внутри функции, на самом деле не имеет значения, но я все равно включил его на случай, если я ошибаюсь, и это делает ..
getData = async(file) =>{
let data = await fetch(file);
data = await data.text();
return(data);
}
getDataAndUsername = async() => {
this.setState({data: JSON.parse(await this.getData("/getData"))});
this.setState({username: await this.getData("/user")});
console.log('done');
}
getDataAndUsername - это асинхронная функция, которую я пытаюсь запустить перед другими функциями.
CheckInDataBase = (username) => {
console.log('checking In DataBase');
this.state.data.forEach((element)=>{
if(element.username === username){
this.setState({exist: true});
}
});
if (!(this.state.exist)){
axios.post('/createUser', {"username": username, "status": "Working"});
this.setState({exist: true});
}
}
это обычная функция, которую я пытаюсь запустить после асинхронной
и это код:
new Promise((res) => {
this.getDataAndUsername();
res();
}).then(
this.CheckInDataBase(this.state.username)
)
, что сейчас происходит, так это то, что this.CheckInDatabase запускается до завершения getDataAndUsername.