1

在 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错误地使用了新的?

4

1 回答 1

2

这是 RxJS 5.5 中的一个已知错误,带有mergeAllconcatAll. 它将在 RxJS 6 中修复。

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

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

现在最好使用mergeMap(o => o)orconcatMap(o => o)代替。

于 2018-02-20T15:25:46.943 回答