【问题标题】:RxJS - concatenate mapped elements onto a streamRxJS - 将映射元素连接到流上
【发布时间】:2018-05-10 14:59:37
【问题描述】:

是否有一个运算符允许我映射流的元素,而不是转换它们,连接它们?

我有一个流

A => B => C

items$.concatMap(x => f(x)) 会导致

"f(A)" => "f(B)" => "f(C)"

虽然concat 没有接收元素作为参数,所以这也不起作用

我想实现:

"A" => "B" => "C" => "f(A)" => f(B) => "f(C)"

这可以做到,但我不得不烦人地分解并存储我的流(我想这对于一个小例子来说很好,但在更长的管道上它更麻烦)。

item$ = Observable.of("A","B","C");

item$.concat(item$.map(x => f(x)));

【问题讨论】:

    标签: javascript rxjs5 reactive-extensions-js


    【解决方案1】:

    我终于为此找到了正确的运算符(在撰写本文时,我在 RxJS 5 docs 中找不到它),但它被称为 let 并为您提供了整个当前可观察对象作为参数。

    item$.let(obs$ => obs$.concat(obs$.map(f));
    

    如果它是第一次操作,这并不是很令人印象深刻,它确实很有用,但是你可以在前面有更多的东西,并且希望避免不得不停止并将流存储在局部变量中:

    item$.debounce(1000)
         .map(z => f(z.id))
         .moreOperators(...)
         .let(obs$ => obs$.concat(obs$.map(f));
    

    【讨论】:

      猜你喜欢
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      相关资源
      最近更新 更多