【问题标题】:Augment seperate values in observable of array - RxJS增加可观察数组中的单独值 - RxJS
【发布时间】:2017-07-26 19:48:42
【问题描述】:

我一直在尝试解决这个问题一段时间,我猜这是一个很常见的问题,但我想做的是增加来自可观察对象的数组中的项目,并且增加发生在可观察对象或诺言 所以我想要以下内容:

function augment(person: Person): Observable<PersonWithAddress> { 
    // does ajax call or something
}

const items$: Observable<Person[]>;

items$
    .do(x => {}) // x would be of type Person[]
    .flatFlatMap(person => { // person would be of type Person
        return augment(person); // this would return an Observable<PersonWithAddress>
    })
    .subscribe(peopleWithAddresses => { // peopleWithAddresses would be of type PersonWithAddress[]
    })

是否有某种运算符用于此操作,我知道我可以使用 flatMap 将可观察对象发出的单个项目增强或映射到来自可观察对象的其他东西,但是是否有类似 flatFlatMap 之类的东西。

【问题讨论】:

    标签: rxjs observable reactive-extensions-js


    【解决方案1】:

    你可以使用forkJoin做你想做的事。

    它需要一个可观察对象(或承诺)数组,当所有对象都完成(或解决)后,它会发出一个包含最后发出(或解决)值的数组:

    import { Observable } from "rxjs/Observable";
    import "rxjs/add/observable/forkJoin";
    
    
    items$
      .flatMap((people: Person[]) => Observable.forkJoin(
        people.map(person => augment(person))
      ))
      .subscribe((peopleWithAddresses: PersonWithAddress[]) => {
        // ...
      });
    

    【讨论】:

    • 天啊,非常感谢,我已经为此苦苦挣扎了一段时间。运营商太多了
    • 是的,有一些需要学习。你可能没有看到它,但是在 RxJS 网页底部有一个向导,你可能会发现它很有用:reactivex.io/rxjs
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 2021-11-01
    • 2020-05-02
    • 2016-06-18
    • 2018-11-23
    • 1970-01-01
    相关资源
    最近更新 更多