Я тестирую некоторые из операторов rx js, с которыми я столкнулся в определенных проблемах
У меня есть:
export interface User{
id: number;
name: string;
}
export interface PersonalDetail {
id: number;
dob: Date;
}
export interface UserDetail {
id: number;
name: string;
dob: Date;
}
this.userService() // return Observable<User[]>
this.userService.getUsersPersonalDataById(id) // return Observable<PersonalDetail>
То, что я делаю так, но он оценивает один по one
this.users: UserDetail[] = [];
this.userService.getAllusers().pipe(
concatMap((result: User[]) =>
from(result).pipe(
concatMap(u => this.userService.getUsersPersonalDataById(u.id).pipe(
map((p: PersonalDetail) => ({...u, ...p} as UserDetail)))
)
)
)
).subscribe((res: UserDetail) => {
this.users.push(res);
console.log(res);
})
Но он оценивает One By One, что мне действительно нужно
this.userService.getAllusers().pipe(
concatMap((result: User[]) =>
from(result).pipe(
concatMap(u => this.userService.getUsersPersonalDataById(u.id).pipe(
map((p: PersonalDetail) => ({...u, ...p} as UserDetail))
)
)
)
// some code to return UserDetail[]
)
).subscribe((res: UserDetail[]) => {
this.users = res;
console.log(res);
})