Angular RxJs:计算组件中的可观测数组长度
我有一个可观察的数组,Angular RxJs:计算组件中的可观测数组长度,angular,rxjs,Angular,Rxjs,我有一个可观察的数组,购买$。在角度2分量中,我想计算数组的长度。我担心可观察的东西永远都不完整,因此我的订阅量最终会堆积如山。如果我执行以下操作,订阅将完成吗 this.purchases$.subscribe((val) => { val.length > 0 ? this.purchaseType = 'initial' : this.purchaseType = 'additional' }) 一旦我有了初始值,我很乐意取消订阅 我可以简单地将.unsubscribe(
购买$
。在角度2分量中,我想计算数组的长度。我担心可观察的东西永远都不完整,因此我的订阅量最终会堆积如山。如果我执行以下操作,订阅将完成吗
this.purchases$.subscribe((val) => {
val.length > 0 ? this.purchaseType = 'initial' : this.purchaseType = 'additional'
})
一旦我有了初始值,我很乐意取消订阅
我可以简单地将
.unsubscribe()
添加到末尾吗?与其强制取消订阅,我建议您使用创建一个可观察的,在发出第一个结果后自动完成:
this.purchases$.pipe(first()).subscribe((val) => {
val.length > 0 ? this.purchaseType = 'initial' : this.purchaseType = 'additiona';
})
与其强制取消订阅,我建议您使用创建一个可观察的,在发出第一个结果后自动完成:
this.purchases$.pipe(first()).subscribe((val) => {
val.length > 0 ? this.purchaseType = 'initial' : this.purchaseType = 'additiona';
})
订阅中的内容不会影响可观察到的源,因此如果要取消订阅,需要使用完成链的操作员或手动取消订阅 例如,如果您知道要接受多少项,您可以使用
take(N)
,或者如果它取决于特定条件,您可以使用takeWhile()
。或者您可以使用scan()
收集项目,并将其与takeWhile()
结合使用
您也可以在订阅呼叫中立即取消订阅:
this.purchases$.subscribe(function(val) {
if (condition) {
this.unsubscribe();
}
});
请注意,在这种情况下,您不能使用箭头函数
()=>…
,因为RxJS将此
上下文绑定到当前订阅
对象。这就是为什么您可以调用this.unsubscribe()
和unsubscribe(这不是黑客攻击,它的目的是这样使用)。您订阅中的内容不会影响可观察到的源代码,因此如果您想要取消订阅,您需要使用一个操作符来完成链或手动取消订阅
例如,如果您知道要接受多少项,您可以使用take(N)
,或者如果它取决于特定条件,您可以使用takeWhile()
。或者您可以使用scan()
收集项目,并将其与takeWhile()
结合使用
您也可以在订阅呼叫中立即取消订阅:
this.purchases$.subscribe(function(val) {
if (condition) {
this.unsubscribe();
}
});
请注意,在这种情况下,您不能使用箭头函数
()=>…
,因为RxJS将此
上下文绑定到当前订阅
对象。这就是为什么您可以调用this.unsubscribe()
和unsubscribe(这不是黑客攻击,它的目的是以这种方式使用)。您还可以使用takeWhile
操作符,将其与onDestroy
上变为false的变量一起使用,因此,一旦组件被删除,您的订阅将被删除。您也可以使用take
操作符,将其与ondestory
上的一个变元一起使用,这样一旦组件被删除,您的订阅将被删除。我将在哪里包括take(N)
在我的订阅中?此。购买$.pipe(take(N))。订阅(…)
似乎angular不认识pipe
。。。嗯,在我的订阅中,我应该在哪里包括take(N)
呢?this.purchases$.pipe(take(N))。订阅(…)
似乎angular不认识pipe
。。。六羟甲基三聚氰胺六甲醚