![](/img/trans.png)
[英]RXJS - Execute function if a specific condition is met on a value from a observable
[英]How to execute function for each observable in RXJS
我有這樣一個可觀察的情況:
//pseudo code
var agreement:Observable<agreement[]> = Observable.ajax({...})
.flatMap(agreements:[] => {
agreements.forEach(agreement =>{
//server request for each agreement
//If request fail throw exception
});
return agreements;
})
.map(agreements => agreements);
在這里,我需要檢查每個協議是否存在於其他服務器中,如果不存在則拋出異常。 主要問題是如何等待所有所有協議都被檢查並得到結果。
答案取決於在forEach
循環中發生的事情–如果您使用forEach
發出的agreements
(進入flatMap
agreements
)是可觀察的,則該策略會有所不同,因為您不一定知道如何將發射許多agreement
對象。
假設forEach
只是在運行其他一些基本的http調用,例如,一個返回諾言的答案,那么答案將是涉及收集諾言並允許他們全部完成Promise-way ,這樣就可以完成了轉換為鏈中下一個運算符的Observable。
一些偽代碼:
var agreement: Observable<agreement[]> = Observable.ajax({...})
.flatMap(agreements:[] => {
const promises = agreements.map(agreement => doHttpThing()
.then(...)
.catch(err => Observable.throw(err))
);
return Observable.fromPromise(Promise.all(promises));
})
.map(agreements => agreements);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.