[英]Close subscription on condition with takeUntil()
我已訂閱,可以從NgRx減速器獲取提供程序。 我想使用takeUntil()
在最終返回具有內容的數組時自動關閉訂閱:
// Fetch providers
this.store.pipe(select(reducer.getProviders))
// .takeUntil(reducer.getProviders.length > 0)
.subscribe(providers => {
if (providers) {
this.providers = providers;
// takeUntil(/** something **/);
}
});
有人可以幫我弄這個嗎?
我不知道如何利用takeUntil()
您正在尋找takeWhile()
。
takeUntil()
的參數是一個可觀察值,一旦該可觀察值發出,它將停止獲取值。
takeWhile()
的參數是確定是否采用值的謂詞。
請參閱有關學習-rxjs上的takeWh的文檔: https ://www.learnrxjs.io/operators/filtering/takewhile.html
takeWhile(predicate:function(value,index):boolean,inclusive ?: boolean):可觀察
發射值,直到提供的表達式為假。
takeUntil
接受一個Observable。 (來源: docs )。 對於您的情況,使用takeWhile
會更有意義,只要滿足特定條件,它就會發出值(來源: docs )。 將可選的inclusive
屬性設置為true,以便它還會發出未通過謂詞的第一項。
this.store.pipe(select(reducer.getProviders))
.takeWhile(reducer => reducer.getProviders.length == 0, true)
.subscribe(providers => {
if (providers) {
this.providers = providers;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.