Я ищу способ объединения RxJS Observables для выполнения следующих шагов в приложении Angular:
- Создание объекта Галереи на внутреннем сервере
- Загрузка фотографий, как они сделаны
- Обновление объекта Галереи на внутреннем сервере с отметкой времени
- Обновить страницу с результатами
У меня есть Observable photoObservable
, который инкапсулирует компонент камеры, который завершается, когда компонент камеры закрыт.
Вот фрагмент кода, который у меня есть. Я наблюдаю за цепью Observable в середине:
private photoObservable: Observable;
private photoObserver: Observer;
cameraClosed() {
this.photoObserver.complete();
}
uploadPhotoFromCamera(data) {
if (this.photoObservable == null) {
this.photoObservable = new Observable((observer) => {
this.photoObserver = observer;
});
this.galleryService.putGallery(...)
.mergeMap(
returnedGallery => {
// This where I need to upload photos as they are taken
// Each upload will return an Observable
})
.concatMap(
returnedGallery => {
this.galleryService.updateGallery(returnedGallery));
}
.subscribe(
returnedGallery => {
log('Gallery updated!');
);
}
this.photoObserver.next(data);
}
Я пробовал concat и concatMap, так как они оба полагаются на предыдущее завершение Observable до запуска следующего, но я не могу заставить его работать.
Есть ли способ добиться этого с помощью операторов RxJS? Может быть, какая-то смесь между Конкатом и Форкджоном?