Это мой registerOrde
, который сохраняет и заказывает затем список OrderedProduct, а затем "возвращает" заказ.
private createOrder(order: Order): Observable<Order> {...}
private createOrderedProduct(orderedProduct: OrderedProduct): Observable<OrderedProduct> {...}
public registerOrder(order: Order): Observable<Order> {
return new Observable<Order>(subscriber => {
this.createOrder(order).subscribe(
createdOrder => {
if (order.orderedProducts) {
let observableBatch = [];
order.orderedProducts.forEach(orderedProduct => {
orderedProduct.order = createdOrder;
observableBatch.push(this.createOrderedProduct(orderedProduct));
});
forkJoin(observableBatch).subscribe(
products => {
createdOrder.orderedProducts = products;
subscriber.next(createdOrder);
subscriber.complete();
},
error => {
subscriber.error(error);
subscriber.complete();
}
);
} else {
subscriber.next(createdOrder);
subscriber.complete();
}
},
error => {
subscriber.error(error);
subscriber.complete();
}
);
});
}
Я хотел бы иметь такое же поведение, но более корректно (то есть, используя операторы и удаляя инструкцию 'new Observable'). Я использую Angular 6.
Какие операторы мне следует использовать? Любой совет?