mergeAll与lettable运算符(rxjs 5.5+)的工作方式不同?

时间:2018-02-20 15:16:41

标签: rxjs rxjs5 rxjs-lettable-operators

在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(...)
    );
}

但以下工作正常(我假设不应该混合lettable和链式运算符):

get someData$(): Observable<Data> {
  return this.dataService.higherOrderDataStream
    .mergeAll()
    .pipe(
      map(...)
    );
}

我应该使用不同的mergeAll吗?我正在使用rxjs/operators之前使用rxjs/add/operator/mergeAll的地方。我认为这两个实现是等价的。

这是一个错误还是我错误地使用了新的mergeAll

1 个答案:

答案 0 :(得分:2)

这是RxJS 5.5中已知的错误up_timermergeAll。它将在RxJS 6中修复。

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

几天前修复了合并:https://github.com/ReactiveX/rxjs/pull/3321

现在最好使用concatAllmergeMap(o => o)