RxJS 6静态合并在哪里?

时间:2018-04-27 12:00:05

标签: rxjs

在RxJS 6中,如何导入静态合并函数以合并Observable列表?

我希望能够做到:

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

我试过了:

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

import { merge } from 'rxjs/operators';

但似乎都没有给我我想要的东西。

4 个答案:

答案 0 :(得分:22)

在RxJS 6中轻松导入:

 import {merge} from 'rxjs';

您可能需要阅读official migration guide

有关RxJS 6中导入的另一个有用资源是Ben Lesh的this talk,他是RxJS的领导者。

答案 1 :(得分:3)

我现在相信"创造"删除了类,推荐的方法是直接从'rxjs'导入:

import { merge as mergeStatic } from 'rxjs';

以前的RxJS 6 alpha版本曾经有'rxjs/create'个文件,但已经删除了这个版本:https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md#600-alpha3-2018-02-06

然而,这需要您use path maps correctly,否则您将导入许多您不需要的东西。如果您不使用路径映射或隐藏的构建过程,您可以直接导入正确的文件:

import { merge as mergeStatic } from 'rxjs/internal/observable/merge';

答案 2 :(得分:1)

从RXJS 6开始。合并在rxjs / operators中

从“ rxjs / operators”导入{映射,获取,合并,switchMap,过滤器};

答案 3 :(得分:1)

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 文档的示例)