У меня есть массив пользователей:
[0: {id:123, firstname:'xyz', lastname:'abc'}, 1:{id:456, firstname:'foo', lastname:'bar'}, 3:{id:567, firstname:'bar', lastname:'baz'}]
Я должен пройти через этот массив и вызвать сервисный API для получения пользовательских назначений.
Метод 1 , который, на мой взгляд, не является лучшей практикой, но решает проблему
let userAppointments = []
for (let user of this.users) {
this._service
.getUsersAppointments(
{
date: this.todayDate,
id: user.id
},
this.token
)
.subscribe(res => {
// Modifying array as per requirements-----
userAppointments.push({
id: user.id,
name: `${user.firstname} ${user.lastname}`,
appointments: res
});
});
}
this.appointments = userAppointments
метод 2: с использованием forkJoin
Проблема: я не могу получить доступ к имени и фамилии пользователя, когда наконец получаю ответ от всех вызовов. Мне нужны эти детали в моем окончательном массиве this.appointments, т.е. после вызова подписки, где я назначаю res to this.appointments
forkJoin(
this.users
.map(res =>
this._service.getUsersAppointments(
{
date: this.todayDate,
id: res.id
},
this.token
)
)
.map(response => response)
).subscribe(res => {
// how can I access 'user object' keys like: firstname, id here--------------
this.appointments = res;
});
Пожалуйста, дайте мне знать, если моя проблема не ясна.
Направлено SO ответ и Вопрос повторного просмотра кода для метода 2