从对象属性的Observable获取价值

时间:2019-05-09 13:16:24

标签: javascript rxjs

给出一个具有内部Observable作为其属性之一的对象的Observable,如何从可观察链中获取内部Observable以及对象的其余部分的值?

简化的示例构造:

let obs = of({ prop1: 'foo', prop2: of('bar') })

结果应该是

{ prop1: "foo", prop2: "bar" }

我尝试过使用flatMap,但是只能从内部可观察到的值本身获取值,而在此过程中丢失了对象的其余部分。

编辑:略微改编的JuliusDzidzevičius的答案解决了我的问题:

of({ prop1: 'foo', prop2: of('bar') }).pipe(
    switchMap(val => val.prop2,
        (a, b) => ({ prop1: a.prop1, prop2: b })
    )).subscribe(console.log)

1 个答案:

答案 0 :(得分:1)

您可以通过展平运算符(例如switchMapflatMap等)使用 ResultSelector 函数:

obs = of({ prop1: 'foo', prop2: of('bar') }).pipe(
  switchMap(val => val.prop2,
  (a, b) => ({a, b})
).subscribe(console.log)