【问题标题】:Emit two values when a value is emitted发出一个值时发出两个值
【发布时间】:2020-02-27 20:52:50
【问题描述】:

是否可以发出两个值来交换一个发出的值?

假设我有这个代码

of(1,2,3).pipe( <what goes here?> )

我希望得到的大理石图是

---1---1.5---2---2.5---3---3.5---->

即对于of 发出的每个值,将生成两个值。

【问题讨论】:

    标签: rxjs


    【解决方案1】:

    您可以通过mergeMap(或concatMap)做到这一点:

    of(1,2,3)
      .pipe(
        mergeMap(v => [v, 2 + 0.5]),
      )
    

    mergeMap 将迭代从投影函数返回的数组并重新发送每个值。

    【讨论】:

      【解决方案2】:

      这里是 concatMap:

      const mappingFn = n => Rx.Observable.of(n, n + 0.5);
      
      o1.concatMap(mappingFn)
        .subscribe(c => console.log(c));
      

      mappingFn 将每个值映射到两个值

      【讨论】:

        猜你喜欢
        • 2017-12-17
        • 1970-01-01
        • 2019-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多