mergeAll 与可出租运算符(rxjs 5.5+)的工作方式不同吗?
mergeAll not working the same as a lettable operator (rxjs 5.5+)?
在 lettable 运算符之前,代码如下所示:
get someData$(): Observable<Data> {
return this.dataService.higherOrderDataStream
.mergeAll()
.map(...);
}
重构以使用 pipe
,我得到一个类型错误,本质上说 Observable<Observable<Data>>
不可分配给类型 Observable<Data>
:
get someData$(): Observable<Data> {
return this.dataService.higherOrderDataStream
.pipe(
mergeAll(),
map(...)
);
}
但以下工作正常(我假设不应该混合可出租和链式运算符):
get someData$(): Observable<Data> {
return this.dataService.higherOrderDataStream
.mergeAll()
.pipe(
map(...)
);
}
我应该使用其他 mergeAll
吗?我使用的是 rxjs/operators
中的那个,我之前使用的是 rxjs/add/operator/mergeAll
。我认为这两个实现是等价的。
这是错误还是我使用新的 mergeAll
不正确?
这是 RxJS 5.5 中 mergeAll
和 concatAll
的已知错误。它将在 RxJS 6 中修复。
有关详细信息,请参阅:https://github.com/ReactiveX/rxjs/issues/2759
几天前合并修复:https://github.com/ReactiveX/rxjs/pull/3321
目前最好使用 mergeMap(o => o)
或 concatMap(o => o)
。
在 lettable 运算符之前,代码如下所示:
get someData$(): Observable<Data> {
return this.dataService.higherOrderDataStream
.mergeAll()
.map(...);
}
重构以使用 pipe
,我得到一个类型错误,本质上说 Observable<Observable<Data>>
不可分配给类型 Observable<Data>
:
get someData$(): Observable<Data> {
return this.dataService.higherOrderDataStream
.pipe(
mergeAll(),
map(...)
);
}
但以下工作正常(我假设不应该混合可出租和链式运算符):
get someData$(): Observable<Data> {
return this.dataService.higherOrderDataStream
.mergeAll()
.pipe(
map(...)
);
}
我应该使用其他 mergeAll
吗?我使用的是 rxjs/operators
中的那个,我之前使用的是 rxjs/add/operator/mergeAll
。我认为这两个实现是等价的。
这是错误还是我使用新的 mergeAll
不正确?
这是 RxJS 5.5 中 mergeAll
和 concatAll
的已知错误。它将在 RxJS 6 中修复。
有关详细信息,请参阅:https://github.com/ReactiveX/rxjs/issues/2759
几天前合并修复:https://github.com/ReactiveX/rxjs/pull/3321
目前最好使用 mergeMap(o => o)
或 concatMap(o => o)
。