Вызовы API асинхронны. Когда компилятор выполняет оператор asyn c, он не ждет, пока он завершит sh, а вместо этого вызывает следующий оператор.
Вариант первый (с использованием блока .then): -
useEffect(
() => {
createChatSessionId();
fetchEventAnswerFromDialogflow("Startevent" + chatId, chatId).then(rep=>{
fetchEventAnswerFromDialogflow("Frageevent1", chatId);})
.catch(err){
console.log(err)
}
}, // eslint-disable-next-line
[]
);
Вариант второй - Согласно ES6 с использованием asyn c await. Я бы посоветовал не использовать обратный вызов useEffect как asyn c, а вместо этого создать новую функцию asyn c внутри useEffect и вызвать ее.
useEffect(
() => {
createChatSessionId();
const getData = async() =>{
await fetchEventAnswerFromDialogflow("Startevent" + chatId, chatId);
await fetchEventAnswerFromDialogflow("Frageevent1", chatId); //Can remove await
//here, depending upon usecase
}
getData();
}, // eslint-disable-next-line
[]
);