难以处理 RxJS return 值和文档,在数组和项目系列之间转换

Difficulty with RxJS return values and documentation, converting between array and series of items

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

rxjs 5.5.6 angular5.2.0

我收到以下错误:

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

来自以下在数组和一系列项目之间来回转换的代码。我试图插入 mergeAll 代替 mergeMap,它在转换数组时按预期编译和工作。我希望根据文档从 mergeAll 中得到一个 Observable returned 而不必强制转换,特别是因为 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 的 return Observable 值。我在看正确的文档吗?我是不是不了解 RxJS 的一些基本知识?

public mergeAll(concurrent: number): Observable

Converts a higher-order Observable into a first-order Observable which concurrently delivers all values that are emitted on the inner Observables.

Reactive RxJS mergeAll documentation

如果情况是 return 正在迭代并且这是有意的,那么链接可观察运算符的最佳做法是什么?我是否必须在每个链之间转换或创建一个 Observable?这对我来说没有意义,我希望我只是做错了什么。

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

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

所以目前推荐的方法是真正使用您在 .mergeMap(val => val) 中所做的事情。