Я все еще изучаю rx js и у меня проблемы с использованием нескольких подписок. Мне нужно получить идентификатор из ответа, чтобы добавить фотографии к продукту.
create(product) {
this.api.createProduct(product).subscribe(product => {
product.photos.forEach(photo => {
photo.productId = product.id;
this.api.addPhoto(photo).subscribe();
});
});
Это мое рабочее решение, но я знаю, что оно неверно, и я должен использовать mergeMap и CombinLatest, но я не знаю, как.
Обновление 1
Мое решение
create(productForm) {
this.api.createProduct(productForm).pipe(
mergeMap(photo => {
return combineLatest([
productForm.photos.map(photo => {
this.api.addPhoto({...photo, productId: product.id})//.subscribe()
})
]);
).subscribe();
}
Я не могу добавить фотографии в текущее решение. Только когда я добавил подписку на addPhoto, это сработало.
Обновление 2
Мое решение
create(productForm) {
this.api.createProduct(productForm).pipe(
mergeMap(photo => {
const photos = [];
productForm.photos.map(photo => {
photos.push(this.api.addPhoto({...photo, productId: product.id}));
});
return combineLatest([...photos]);
})
).subscribe();
}
Теперь оно работает правильно.