RxJS 史诗中弃用的 concat 运算符

deprecated concat operator in RxJS epic

我有一个与 concat 运算符配合得很好的史诗。 Webstorm 开始说它以我使用它的方式被弃用。说

deprecated export function concat<{type: string}[]>( v1: {type: string}[], scheduler: SchedulerLike): Observable> Use scheduled and concatAll (e.g. scheduled([o1, o2, o3], scheduler).pipe(concatAll())

想不通,如何重写这段代码?

const epic = action$ => action$.pipe(
  ofType(TYPE),
  mergeMap(() =>
    concat(
      of({type: 'START'}),
      ajax.getJSON('someurl').pipe(
        mergeMap(serverResponse => ([
          {type: 'LOADED'},
          {type: 'DO_JOB', serverResponse}
        ]))
    )
  )
)

使用concatWith。 concatWith 实际上并不是一个全新的运算符。它仅用于替换当前标记为已弃用并将在 v8 中删除的 concat 运算符。

不过,两者之间存在细微差别。 concatWith 只接受 ObservableInput 类型的输入,而 concat 也可以接受调度程序。

可以找到更多详细信息here

在你的情况下这不是弃用。

弃用仅影响带有调度程序参数的连接。 (函数的另一个签名)。 (参见其他类似问题:https://github.com/ReactiveX/rxjs/issues/4723

您可以使用:

// tslint:disable-next-line:deprecation
concat(...);