如何压扁这个可观察数组?
var observables = [
Rx.Observable.of(1),
Rx.Observable.of(2),
Rx.Observable.of(3)
]
Rx.Observable.of("a").mergeMap(x => {
return Rx.Observable.from(observables)
}).subscribe(y => {
console.log(y)
})
我的期望是得到:
1
2
3
但相反,我正在
ScalarObservable { _isScalar: true, value: 1, scheduler: null }
ScalarObservable { _isScalar: true, value: 2, scheduler: null }
ScalarObservable { _isScalar: true, value: 3, scheduler: null }
我搜索了这个网站,发现了这个:How to flatten Array of Observables in an Observable ...,但看起来太复杂了(?)的原因。或者可能不是我正在寻找的东西。
有什么想法?建议?
谢谢!
答案 0 :(得分:2)
你可以merge
他们在一起:
Rx.Observable.merge(...observables)
const obs$ = [
Rx.Observable.of(1),
Rx.Observable.of(2),
Rx.Observable.of(3),
];
Rx.Observable.merge(...obs$).subscribe(console.log);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.6/Rx.min.js"></script>
答案 1 :(得分:0)
这是代码,包含你的建议(合并),我把它放在一个concatMap中...因为那就是我正在处理的情况,我需要在该块内部生成一个observable数组,并且它们合并到外部可观察量中:
observables = [
Rx.Observable.of(1),
Rx.Observable.of(2),
Rx.Observable.of(3)
]
Rx.Observable.of("a").concatMap(x => {
return Rx.Observable.merge(observables)
}).subscribe(y => console.log(y))