Функцию RxJS объединитьПоследние можно импортировать как из операторов rxjs, так и из операторов rxjs /. В чем разница между ними? - PullRequest
0 голосов
/ 23 октября 2018

Функцию ОбъединитьПоследние можно импортировать из rxjs и из rxjs / operator .

Когда я импортирую ее из rxjs / operator (так же, как я импортирую Объединить все Я получаю следующую ошибку:

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 / operator :

import { combineLatest } from "rxjs";

И вдруг это сработало. Хорошо, но кто-нибудь может объяснить, в чем разницамежду двумя?

1 Ответ

0 голосов
/ 23 октября 2018
  1. import { combineLatest } from "rxjs";

    Это так называемый «наблюдаемый метод создания».По сути, это метод, который возвращает Observable на основе переданных им аргументов (точно так же как from() или of()).Так как он возвращает экземпляр Observable, он имеет метод subscribe().

  2. import { combineLatest } from "rxjs/operators";

    Этот оператор должен использоваться внутри цепочки операторов,Это метод, который возвращает другой метод, который подписывается на предыдущую Observable и возвращает другой Observable, который обрабатывает каждое значение, проходящее через его вывод.

Именно поэтому он выдает ошибку Property 'subscribe' does not exist on type.....Метод subscribe() не существует в методе, возвращенном из оператора combineLatest() (он возвращает еще одну функцию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...