Я получаю свои данные пользователя, и функция карты вызывается несколько раз для каждого пользователя.Я хочу подождать, пока все данные не будут помещены в массив, а затем манипулировать данными.Я пытался использовать Promise.all (), но это не сработало.Как я могу дождаться завершения этой функции карты, прежде чем продолжить?
Нет необходимости говорить, что массив user_list_temp
пуст при печати внутри Promise.all ().
const phone_list_promise_1 = await arrWithKeys.map(async (users,i) => {
return firebase.database().ref(`/users/${users}`)
.on('value', snapshot => {
user_list_temp.push(snapshot.val());
console.log(snapshot.val());
})
}
);
Promise.all(phone_list_promise_1).then( () => console.log(user_list_temp) )
Я изменил код на этот, но все равно получаю неправильный вывод
Promise.all(arrWithKeys.map(async (users,i) => {
const eventRef = db.ref(`users/${users}`);
await eventRef.on('value', snapshot => {
const value = snapshot.val();
console.log(value);
phone_user_list[0][users].name = value.name;
phone_user_list[0][users].photo = value.photo;
})
console.log(phone_user_list[0]);
user_list_temp.push(phone_user_list[0]);
}
));
console.log(user_list_temp); //empty array
}