RxJS难以返回值和文档,在数组和一系列项之间进行转换

时间:2018-02-14 16:28:31

标签: angular rxjs rxjs5

我是一名初学者,正在使用RxJS和Angular的基本示例。我正在使用:

rxjs 5.5.6 角度5.2.0

我收到以下错误:

error TS2339: Property 'do' does not exist on type 'number[]'.

来自以下代码,它在数组和一系列项之间来回转换。我试图插入mergeAll来代替mergeMap,它在转换数组时编译并按预期工作。我希望在不需要强制转换的情况下根据文档从mergeAll返回一个Observable,特别是因为mergeMap是基于mergeAll的。

this.notWorking().subscribe();

notWorking(): Observable<any> {
    return Observable.from([[1, 2, 3, 4]])
        .do(obj => console.log(obj))
        // .mergeMap(val => val)
        .mergeAll()
        .do(obj => console.log(obj))
        .toArray()
        .do(obj => console.log(obj))
}

在ReactiveX RxJS的文档中,它仅显示了mergeAll的Observable的返回值。我在看正确的文件吗?我不理解RxJS的基本内容吗?

  

public mergeAll(concurrent:number):Observable

     

将高阶Observable转换为一阶Observable   同时传递内部发出的所有值   可观测量。

Reactive RxJS mergeAll documentation

如果情况是它返回一个iterable并且这是预期的,那么链接可观察运算符的最佳实践是什么?我是否必须在每个链之间进行转换或创建一个Observable?这对我来说没有意义,我希望我做错了。

1 个答案:

答案 0 :(得分:2)

这是RxJS 5.5中mergeAllconcatAll的输入中的已知问题,将在RxJS 6中修复。

有关详细信息,请参阅:https://github.com/ReactiveX/rxjs/issues/2759

所以现在推荐的方法实际上是使用你对.mergeMap(val => val)所做的事情。