我是一名初学者,正在使用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?这对我来说没有意义,我希望我做错了。
答案 0 :(得分:2)
这是RxJS 5.5中mergeAll
和concatAll
的输入中的已知问题,将在RxJS 6中修复。
有关详细信息,请参阅:https://github.com/ReactiveX/rxjs/issues/2759
所以现在推荐的方法实际上是使用你对.mergeMap(val => val)
所做的事情。