每个发出几次?
Every that emits several times?
我尝试了以下使用 ngrx 作为可观察源的代码。
this.continue$ = this.store.select(s => s.cart)
.switchMap( cart => Observable.from(cart.items) )
.every( item => item.amount > 0 && item.amount <= item.max_amount )
我想做的是,每次发出新的 Cart
时,测试 Cart
中的所有项目,如果每个项目都通过特定条件则发出布尔值。
我尝试使用 every()
操作,但现在我明白 every()
永远不会发出任何东西,因为源可观察性永远不会完成。 (如果它完成,every()
将只发出一次,因为它就是这样工作的)
我的问题是,有没有比
更好(不需要 subscribe
)解决我的问题的方法
this.store.select(s => s.cart)
.subscribe( cart => {
this.continue$ = Observable.from(cart.items)
.every( item => item.amount > 0 && item.amount <= item.max_amount )
});
我认为这将完成这项工作。注意,这里使用 Array.every()
,我假设 cart.items
是一个数组。
this.continue$ = this.store.select(s => s.cart)
.map( cart =>
cart.items.every(item =>
item.amount > 0 && item.amount <= item.max_amount
)
);
实际上,您可能会发现这行得通
this.continue$ = this.store.select(s =>
s.cart.items.every(item =>
item.amount > 0 && item.amount <= item.max_amount
)
);
我尝试了以下使用 ngrx 作为可观察源的代码。
this.continue$ = this.store.select(s => s.cart)
.switchMap( cart => Observable.from(cart.items) )
.every( item => item.amount > 0 && item.amount <= item.max_amount )
我想做的是,每次发出新的 Cart
时,测试 Cart
中的所有项目,如果每个项目都通过特定条件则发出布尔值。
我尝试使用 every()
操作,但现在我明白 every()
永远不会发出任何东西,因为源可观察性永远不会完成。 (如果它完成,every()
将只发出一次,因为它就是这样工作的)
我的问题是,有没有比
更好(不需要subscribe
)解决我的问题的方法
this.store.select(s => s.cart)
.subscribe( cart => {
this.continue$ = Observable.from(cart.items)
.every( item => item.amount > 0 && item.amount <= item.max_amount )
});
我认为这将完成这项工作。注意,这里使用 Array.every()
,我假设 cart.items
是一个数组。
this.continue$ = this.store.select(s => s.cart)
.map( cart =>
cart.items.every(item =>
item.amount > 0 && item.amount <= item.max_amount
)
);
实际上,您可能会发现这行得通
this.continue$ = this.store.select(s =>
s.cart.items.every(item =>
item.amount > 0 && item.amount <= item.max_amount
)
);