如何在RXJS中为每个observable执行函数

时间:2017-10-12 11:55:18

标签: javascript rxjs5

我有一种可观察的情况:

//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);

在这里,我需要检查每个协议是否存在于其他服务器中,如果不存在则抛出异常。主要问题是如何等待所有协议,然后才能获得结果。

1 个答案:

答案 0 :(得分:0)

答案取决于forEach循环内发生的事情 - 如果agreements(进入flatMap的那个)是您正在使用的观察者{{1}为了发射,策略完全不同,因为你不一定知道将发射多少forEach个对象。

假设虽然agreement正在运行一些其他基本的http调用,比如说,一个返回promises ...然后答案就是收集promises并允许他们全部完成 Promise -way ,这样就可以将完成转换为链中下一个操作符的Observable。

一些伪代码:

forEach