gpt4 book ai didi

typescript - RxJS combineLatest 函数可以从 rxjs 和 rxjs/operators 导入,两者有什么区别?

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:06 28 4
gpt4 key购买 nike

combineLatest 函数可以从 rxjsrxjs/operators 导入。

当我从 rxjs/operators 导入它时(就像我导入 combineAll 我收到以下错误:

TS2339: Property 'subscribe' does not exist on type 'OperatorFunction<{}, [{}, number, number, number]>'

我使用了以下代码片段:

import { timer } from "rxjs";
import { combineLatest } from "rxjs/operators";

const timerOne = timer(1000, 2500);
const timerTwo = timer(1500, 2500);
const timerThree = timer(2000, 2500);

//when one timer emits, emit the latest values from each timer as an array
const combined$ = combineLatest(timerOne, timerTwo, timerThree);

combined$.subscribe(
([timerValOne, timerValTwo, timerValThree]) => console.log(`Timer One Latest: ${timerValOne}, Two Latest: ${timerValTwo}, Three Latest: ${timerValThree}`)
);

因此,我尝试从 rxjs 而不是 rxjs/operators 导入它:

import { combineLatest } from "rxjs";

突然间它起作用了。很好,但谁能解释一下两者之间的区别?

最佳答案

  1. 从“rxjs”导入 { combineLatest };

    这就是所谓的“Observable 创建方法”。基本上是一种根据您传递给它的参数返回 Observable 的方法(就像 from()of())。由于它返回 Observable 的实例,因此它具有 subscribe() 方法。

  2. 从 "rxjs/operators"导入 { combineLatest };

    这是一个应该在操作符链中使用的操作符。这是一个返回另一个方法的方法,该方法订阅了前面的 Observable,并返回另一个 Observable,该 Observable 处理在其输出中经历的每个值。

这就是它给您错误 Property 'subscribe' does not exist on type.... 的原因。 subscribe() 方法在从 combineLatest() 运算符返回的方法中不存在(它返回另一个函数)。

关于typescript - RxJS combineLatest 函数可以从 rxjs 和 rxjs/operators 导入,两者有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52950090/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com