Я пытаюсь запустить этот код последовательно и получить данные, помещенные в массив перед установкой состояния:
onFirebaseValueChanged = snapshot => {
//Above is a listener for changes
dataArray = []
snapshot.forEach(childSnapshot => {
const childData = childSnapshot.val();
let parentKey = childSnapshot.ref.key
let bankKey = childData.key
let claim = childData.adminClaim
if(claim == false){
//Accessing different part of database for one time read
Firebase.database().ref('/allQuestions/' + bankKey).once('value')
.then(snapshot => {
const childData = snapshot.val()
let answer = childData.Answer
let Question = childData.Question
let Volunteer = childData.Volunteer
let Title = childData.Title
let Asker = childData.Asker
dataArray.push({ text: 'Title:' + Title + '\nQuestion: ' + Question + "\nAnswer: " + answer, Volunteer: Volunteer, keyB : bankKey, parentKey:parentKey, Asker:Asker});
//location 1 - pushing data into array
})
}
});
this.setState({dataArrayDisplay:dataArray})
//location 2 - forcing render by update and using to display
}
Но проблема, с которой я сталкиваюсь, заключается в расположении 2, работающем до расположения 1, которое предотвращает код для правильной работы и установки состояния в самом конце
Однако я получаю правильные результаты, когда есть более одного элемента до l oop, но только с одним ничего не появляется.
Кто-нибудь знает, что происходит?
Спасибо