вы хотите сделать:
$employees
.pipe(mergeMap(employees => {
return forkJoin(employees.map(emp => getDisplayName(emp).pipe(
map(displayName => ({...emp, ...{displayName}}))
)))
}));
, если вы действительно хотите разбитую карту. Fn:
const mapFn = employees => {
return forkJoin(employees.map(emp => getDisplayName(emp).pipe(
map(displayName => ({...emp, ...{displayName}}))
)));
}
$employees
.pipe(mergeMap(mapFn))
всегда советуйте не смешивать rx js и asyn c / await , Это разные методы обработки асин c операций, и они не очень хороши. mergeMap
требует от вас возврата наблюдаемой, forkJoin
выполняет наблюдаемые в parralel, поэтому вы объединяете всех своих сотрудников, сопоставленных с их функциями getName
, а затем сопоставляете имя с исходным сотрудником и возвращаете его.
РЕДАКТИРОВАТЬ: выше, если $eployees
выделяет массив сотрудников. если это всего лишь один сотрудник, выполните:
const mapFn = emp => {
return getDisplayName(emp).pipe(
map(displayName => ({...e, ...{displayName}}))
);
}
однако, если он выдает одного сотрудника (или массив сотрудников) несколько раз, важно понимать последствия использования mergeMap
против switchMap
против concatMap
. Дайте мне знать, если это так.