Где статическое слияние RxJS 6?

Как в RxJS 6 импортировать статическую функцию слияния для слияния списка наблюдаемых?

Я хочу уметь:

const merged$ = merge(
    obs1$,
    obs2$,
    obs3$
);

Я пробовал:

import { merge } from 'rxjs/observable/merge'; и

import { merge } from 'rxjs/operators';

но ни то, ни другое не дает мне того, что я хочу.


person bingles    schedule 27.04.2018    source источник
comment
См. Этот пример в документе: learnrxjs.io/operators/combination/   -  person Guillaume Husta    schedule 19.12.2019


Ответы (4)


В RxJS 6 импорт упростился:

 import { merge } from 'rxjs';

Вы можете прочитать официальное руководство по миграции .

Еще один полезный ресурс, касающийся импорта в RxJS 6, - это этот доклад Бена Леша, руководителя RxJS. .

person siva636    schedule 27.04.2018
comment
как использовать это с новым оператором трубы? - person Alexander Mills; 17.12.2018
comment
Ссылка недействительна 404 - person Gil Epshtain; 03.06.2021

Я считаю, что теперь, когда классы "создания" были удалены, рекомендуемый способ - импорт напрямую из 'rxjs':

import { merge as mergeStatic } from 'rxjs';

В предыдущей альфа-версии RxJS 6 использовался файл 'rxjs/create', но он уже был удален: https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md#600-alpha3-2018-02-06

Однако это требует, чтобы вы правильно использовали карты путей. в противном случае вы импортируете много ненужного. Если вы не используете карты путей или процесс сборки скрыт от вас, вы можете напрямую импортировать правильный файл:

import { merge as mergeStatic } from 'rxjs/internal/observable/merge';
person martin    schedule 27.04.2018

RxJS 7.X

В RxJS v7.X метод merge() лишен и будет удален из RxJS v8.X, вместо этого используйте mergeWith().

См .:
https://rxjs.dev/api/operators/mergeWith
https://rxjs.dev/api/operators/merge (без стоимости)

import { fromEvent } from 'rxjs';
import { map, mergeWith } from 'rxjs/operators';

const clicks$ = fromEvent(document, 'click').pipe(map(() => 'click'));
const mousemoves$ = fromEvent(document, 'mousemove').pipe(map(() => 'mousemove'));
const dblclicks$ = fromEvent(document, 'dblclick').pipe(map(() => 'dblclick'));

mousemoves$.pipe(
  mergeWith(clicks$, dblclicks$),
)
.subscribe(x => console.log(x));

// result (assuming user interactions)
// "mousemove"
// "mousemove"
// "mousemove"
// "click"
// "click"
// "dblclick"

(пример из документации по API)

person Gil Epshtain    schedule 03.06.2021

Начиная с RXJS 6. Слияние выполняется в rxjs / операторах.

import { map, take, merge, switchMap, filter } from 'rxjs/operators';
person Kevin Summersill    schedule 29.06.2018
comment
Не совсем. Есть две функции слияния: из rxjs: rxjs-dev.firebaseapp.com / api / index / function / merge и из 'rxjs / operator': rxjs-dev.firebaseapp.com/api/operators/merge - person ViES; 07.09.2018
comment
Разница: import {merge} from 'rxjs' - ›Создает выходной объект Observable, который одновременно генерирует все значения из каждого заданного входного Observable. || import {merge} from 'rjxs / operators' - ›Устарело в пользу статического слияния. Ты прав; начните использовать только 'rxjs' github.com/ng-bootstrap/ng-bootstrap/ issues / 2394 - person Kevin Summersill; 08.09.2018