【问题标题】:Why `combineLatest` returns OperatorFunction<{}, number>为什么 `combineLatest` 返回 OperatorFunction<{}, number>
【发布时间】:2021-03-08 18:57:41
【问题描述】:

我正在使用RxJS 6 我的代码中有两个可观察对象

import { combineLatest } from 'rxjs/operators';

loading$: Observable<boolean>;
loaded$: Observable<boolean>;

observables 不是来自http 请求,而是来自store

我需要根据此逻辑将序列组合/转换为一个可观察值:
如果序列truetruefalsefalse - 需要返回新的observable true否则需要返回false

我尝试使用combineLatest 来实现:

combineLatest(
    this.loaded$, this.loading$,
    (val1, val2) => Number(val1) + Number(val2) === 1
)

但问题是我的combineLatest 返回'OperatorFunction&lt;&gt; 而不是Observable&lt;&gt;,所以我无法订阅。 你对如何解决这个问题有任何想法吗?或者是否可以采取其他方法?

更新:
似乎这就是我的问题的答案import { combineLatest } from 'RxJS';
正在测试中

【问题讨论】:

  • 您是否导入了pipe-variant 的combineLatest
  • 参见github.com/ReactiveX/rxjs/blob/master/MIGRATION.md,您应该将参数的结果选择器移出 到combineLatest。另请注意,您当前的选择器没有实现您描述的行为。
  • @Caramiriel 是的,我做到了

标签: angular rxjs


【解决方案1】:

对于 RxJS 5.5,这很可能是因为您正在使用 rxjs/operators 中的 combineLatest,而您想将其用作可观察的“创建方法”,这意味着您需要使用 rxjs/observable/combineLatest

我的意思是你需要使用这个:

import { combineLatest } from 'rxjs/observable/combineLatest';

... 而不是这个:

import { combineLatest } from 'rxjs/operators';

编辑:既然您提到您使用的是 RxJS 6,您可以从 rxjs 导入静态变体。

import { combineLatest } from 'rxjs';

如果您正在寻找 combineLatest 运算符,您必须像这样导入它:

import { combineLatest } from 'rxjs/operators';

【讨论】:

【解决方案2】:

我猜我只是需要这个

import { combineLatest } from 'rxjs';

【讨论】:

    猜你喜欢
    • 2011-03-18
    • 1970-01-01
    • 2022-01-19
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 2021-03-03
    • 1970-01-01
    相关资源
    最近更新 更多