RxJS - 将映射元素连接到流中
RxJS - concatenate mapped elements onto a stream
是否有一个运算符允许我映射流的元素而不是转换它们,而是连接它们?
我有一个流
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)));
我终于找到了正确的运算符(在撰写本文时我无法在 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));
是否有一个运算符允许我映射流的元素而不是转换它们,而是连接它们?
我有一个流
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)));
我终于找到了正确的运算符(在撰写本文时我无法在 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));