【问题标题】:Can't subscribe to results of combineLatest无法订阅 combineLatest 的结果
【发布时间】:2023-03-24 17:28:01
【问题描述】:

当我更新到 RxJS 6 时,我的应用程序崩溃了。我得到了大部分的工作,但这个方法让我很难过。

之前我们有一个被 flatMapped 的 observable 数组,然后像这样使用 combineLatest:

const newObservable = myArrayOfObservables
   .flatMap(observables => {
       return Observable.combineLatest(observables);
   });

我可以订阅 newObservable 并从所有其他人那里获取最新输出的数组。

现在我正在尝试做这样的事情:

const mergedList$ = chatList$.pipe(
  mergeMap(res => {
    return combineLatest(res);
  }));

这给了我一个非常冗长而令人费解的问题

类型参数 '(res: Observable[]) => OperatorFunction]>' 不能分配给 '(value: Observable[], index: number) => ObservableInput' 类型的参数。 输入 'OperatorFunction]>' 不可分配给类型 'ObservableInput'。 输入 'OperatorFunction]>' 不可分配给类型 'Iterable'。 类型 'OperatorFunction]>'。

坦率地说,我的阅读障碍使我无法解析。

如果我只是在上面返回res,然后尝试

const mergeCombo = combineLatest(mergedList$);

现在 mergeCombo 不是可观察的。相反,它是一个

OperatorFunction]>

值得注意的是,AngularFireObject.snapshotChanges() 发出了我原来的 observables

【问题讨论】:

    标签: firebase rxjs observable angularfire2


    【解决方案1】:

    你没有展示你是如何导入combineLatest的。看起来您正在将其作为运算符导入,但已被弃用。

    确保你像这样导入它:

    import {combineLatest} from "rxjs";
    

    那么您的原始代码应该可以正常工作:

    const mergedList$ = chatList$.pipe(
      mergeMap(res => combineLatest(res))
    );
    

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 2020-01-23
      • 2020-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      相关资源
      最近更新 更多