我有一个购物车服务,提供有关购物车的反应性数据:
export interface OrderItem {
product: IProduct
quantity: number
}
private subject = new BehaviorSubject<OrderItem[]>([])
private orderItems: Observable<OrderItem[]> = this.subject.asObservable()
getItems(): Observable<OrderItem[]> {
return this.orderItems
}
我想创建一个将返回购物车中产品数量的Observable的方法,如下所示(伪代码):
return getItems().subscribe(items => {
let cartSize = 0
items.forEach(item => cartSize += item.quantity)
})
So basically to return cartSize
as an observable, how can i do that?
You can pipe a
map
to the stream and thenreduce
the array of items using javascript without any extra variable.这不是可观察的,而是依赖于另一个可观察的(这将要求诸如mergeMap,switchMap和withLatestFrom之类的运算符),而仅仅是可观察的一种转换。这将是一张地图。
例如:
然后在某处订阅totalQuantity $。