Структура данных:
tasks: [
{
name: "get milk",
users: ["abc", "def"]
},
{
name: "buy bread",
users: ["def", "ghi"]
}
]
Мне нужно получить адрес электронной почты каждого из пользователей из базы данных (пока все хорошо) и дождаться завершения всех задач, затем переместитьи делать что-то с данными.Место, где это не работает, написано в комментариях ниже:
var tasks_with_emails = tasks.map(function(task) {
var emails = task.users.map(function(user) {
return user_to_email(user); // from the database
});
Promise.all(emails).then(function(emails) {
task.emails = emails;
console.log(task); // this one works fine
return task;
}).catch(next);
});
Promise.all(tasks_with_emails).then(function(tasks) {
console.log(tasks); // <==== this one fires too quickly
}).catch(next);
Так что tasks_with_email
должен дождаться разрешения всех вложенных emails
, но это не так.