Ваша проблема в том, что вы делаете многообещающий вызов через ваш цикл, и вы помещаете отдельный код после вашего цикла.Проблема в том, что код не ждет выполнения, пока вы его не уточните.
Таким образом, либо вы перегруппируете свои звонки в одном обещании и ждете, пока все они ответят, либо вы делаете что-то вроде этого:
export const getSelectedGroupDetail = groupUid => dispatch => {
dispatch({
type: GET_SELECTED_GROUP_DETAIL_START,
});
firebase
.database()
.ref('/groups/' + groupUid)
.once('value')
.then(function (snapshot) {
const membersList = _.map(snapshot.val().members, (val, uid) => ({ ...val, uid }));
let groupMembersList = _.map(selectedGroupData.members, (val, uid) => {
return { ...val, uid };
});
for (let index = 0; index < groupMembersList.length; index++) {
firebase.database().ref('/users/' + groupMembersList[index].uid).once('value')
.then(function (childSnapshot) {
let name = childSnapshot.val().displayName;
groupMembersList[index] = { ...groupMembersList[index], name };
if(index === groupMembersList.length -1)
{
const yeniGrupDetayi = { ...snapshot.val(), uid: groupUid, membersList };
console.log('ACTION NE YAZDI ? ===>', yeniGrupDetayi);
dispatch({
type: GET_SELECTED_GROUP_DETAIL_SUCCESS,
payload: yeniGrupDetayi,
});
NavigationService.navigate('GroupDetail');
}
})
.catch(e => console.log(e.message));
}
})
.catch(e => {
dispatch({
type: GET_SELECTED_GROUP_DETAIL_FAIL,
});
Alert.alert('Hata', 'Beklenmedik bir hata meydana geldi.');
});
};
Это немного грязно и не очень легко обслуживается.но добьется цели