鉴于这种可观察的
Rx.Observable.of([1,2,3,4,5])
发出一个单项(即一个数组),运算符是什么,它会将这个observable转换成一个发出5个单项(或者任何数组由?)
组成示例在.of
上,但是通过promises获取数组也是一样,可能还有很多其他的例子。不建议将of
替换为from
答案 0 :(得分:6)
我想不出现有的操作员可以做到这一点,但你可以做一个:
arrayEmitting$.concatMap(arrayValues => Rx.Observable.merge(arrayValues.map(Rx.Observable.of)))
或更简单的
arrayEmitting$.concatMap(Rx.Observable.of)
或最短的
arrayEmitting$.concatMap(x => x)
这是未经测试的,所以让我知道这是否适合你,并使用Rxjs v4 API(特别是最后一个)。这基本上是:
concatMap
的原因)答案 1 :(得分:5)
您也可以使用flatMap运算符(https://stackoverflow.com/a/32241743/3338239):
Observable.of([1, 2, 3, 4])
.flatMap(x => x)
.subscribe(x => console.log(x));
// output:
// 1
// 2
// 3
// 4
答案 2 :(得分:2)
mergeAll
:
Observable.of([4, 5, 6])
.mergeAll()
.subscribe(console.log);
// output:
// 4
// 5
// 6
答案 3 :(得分:0)
不了解concatMap(x => x)
或flatMap(x => x)
为何起作用,它不会改变任何东西。
这应该可以工作(rxjs 6或更高版本):
of([4,5,6]).pipe(mergeMap(from))
答案 4 :(得分:0)