在可观察量链接期间构建对象

时间:2018-01-11 22:20:41

标签: rxjs observable

假设我有一系列可观察量,这些可观察量会发出一些我想要在最后构建对象的值。例如:

this.myService.myMethod()
    .map(items => items.map(items => item.id))
    // Save id somehow

    .map(id => this.myService.anotherMethod(id)
    // Save another property here

    .filter(data => data.length > 0)
    // At this point, I'd like to have the above 2 variables as well as
    // access to another property based on what is returned from the previous
    // stream

    this.myObject = this.myObject.concat({
        var1,
        var2,
        var3
    })
)

我想知道我是否可以使用combineLatestmergewithLatestFrom来保存这些变量?

1 个答案:

答案 0 :(得分:1)

如果你只对外部observable的第一个发射值感兴趣,你可以使用flatMap(或switchMap,它将从外部observable中获取每个发射的项目并使用它来创建内部可观察的它会调用您的第二种服务方法。第一个和第二个发射值可以与selector函数组合,flatMap函数是switchMap(和 this.myService.myMethod() .flatMap(item => this.myService.anotherMethod(item.id), (first, second) => ({ ...first, ...second }) )的第二个参数。像这样:

{{1}}