Лучшим способом было бы использовать mergeMap
вместе с merge
и last
для получения последнего значения, полученного в результате слияния. Вы должны определить, что положить внутрь of()
. Это должно быть либо undefined
/ void 0
/ null
, если вы возвращаете объект из вызова upload
, либо пустой массив []
, если вы возвращаете массив из загрузки:
createItemWithAttachments({ item, attachmentType1: type1, attachmentType2: type2 }): void {
this.itemService.insert(item).pipe(
mergeMap(({ id }: Item) => {
const mergeUpload = [
...(type1.length ? [this.attachmentService.upload(type1, "type1", id)] : []),
...(type2.length ? [this.attachmentService.upload(type2, "type2", id)] : [])
];
return mergeUpload.length ? merge(...mergeUpload) : of([]);
}),
last()
).subscribe((newAttachments) => {
});
}