我想创建一个Observable
链,它可以在下一个http
之前添加expand
个数据,但我无法弄清楚如何。< / p>
实际测试:
Observable.of('')
.expand(n => n.length < 15 ? Observable.of(n + 'e') : Observable.empty())
.mergeMap(n => Observable.of(n + 'm'))
.subscribe(v => console.log(v));
输出:
m
em
eem
eeem
eeeem
eeeeem
预期产出:
em
emem
ememem
这样做的目的是使用expand
请求为每个http
电话添加信息。
答案 0 :(得分:1)
传递给expand
的函数接收expand
发出的值。它没有收到整个链发出的值。
因此,如果您希望将附加信息(m
)包含在传递给所述函数的值中,则mergeMap
必须在expand
内组成:
Rx.Observable.of('').expand(n => n.length < 15 ?
Rx.Observable.of(n + 'e').mergeMap(n => Rx.Observable.of(n + 'm')) :
Rx.Observable.empty()
)
.subscribe(v => console.log(v));
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>