我有一种可观察的情况:
//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);
在这里,我需要检查每个协议是否存在于其他服务器中,如果不存在则抛出异常。主要问题是如何等待所有协议,然后才能获得结果。
答案 0 :(得分:0)
答案取决于forEach
循环内发生的事情 - 如果agreements
(进入flatMap
的那个)是您正在使用的观察者{{1}为了发射,策略完全不同,因为你不一定知道将发射多少forEach
个对象。
假设虽然agreement
正在运行一些其他基本的http调用,比如说,一个返回promises ...然后答案就是收集promises并允许他们全部完成 Promise -way ,这样就可以将完成转换为链中下一个操作符的Observable。
一些伪代码:
forEach