RxJS - 最新更新



本教程使用 RxJS 版本 6。RxJS 通常用于处理响应式编程,并且更常与 Angular 和 ReactJS 一起使用。Angular 6 默认加载 rxjs6。

与版本 6 相比,RxJS 版本 5 的处理方式不同。如果您将 RxJS 5 更新到 6,代码将中断。在本章中,我们将了解处理版本更新的不同方法。

如果您正在将 RxJS 更新到 6 并且不想更改代码,您也可以这样做,并且需要安装以下软件包。

npm install --save-dev rxjs-compact

此软件包将负责提供向后兼容性,旧代码将在 RxJS 版本 6 中正常工作。如果您想进行对 RxJS 6 有效的代码更改,以下是需要进行的更改。

操作符、可观察对象和主题的软件包已重新构建,因此导入方面发生了重大变化,下面将对其进行说明。

操作符的导入

根据版本 5,对于操作符,应包含以下导入语句:

import 'rxjs/add/operator/mapTo'
import 'rxjs/add/operator/take'
import 'rxjs/add/operator/tap'
import 'rxjs/add/operator/map'

在 RxJS 版本 6 中,导入将如下所示:

import {mapTo, take, tap, map} from "rxjs/operators"

创建可观察对象的导入方法

根据版本 5,在使用可观察对象时,应包含以下导入方法:

import "rxjs/add/observable/from";
import "rxjs/add/observable/of";
import "rxjs/add/observable/fromEvent";
import "rxjs/add/observable/interval";

在 RxJS 版本 6 中,导入将如下所示:

import {from, of, fromEvent, interval} from 'rxjs';

可观察对象的导入

在 RxJS 版本 5 中,在使用可观察对象时,应包含以下导入语句:

import { Observable } from 'rxjs/Observable'

在 RxJS 版本 6 中,导入将如下所示:

import { Observable } from 'rxjs'

主题的导入

在 RxJS 版本 5 中,主题应包含如下所示:

import { Subject} from 'rxjs/Subject'

在 RxJS 版本 6 中,导入将如下所示:

import { Subject } from 'rxjs'

如何在 RxJS 6 中使用操作符?

pipe() 方法 可用于创建的可观察对象。它从版本 5.5 开始添加到 RxJS 中。现在,使用 pipe(),您可以按顺序一起处理多个操作符。这就是 RxJS 版本 5 中操作符的使用方式。

示例

import "rxjs/add/observable/from";
import 'rxjs/add/operator/max'

let list1 = [1, 6, 15, 10, 58, 2, 40];
from(list1).max((a,b)=>a-b).subscribe(x => console.log("The Max value is "+x));

从 RxJS 版本 5.5 开始,我们必须使用 pipe() 来执行操作符:

示例

import { from } from 'rxjs';
import { max } from 'rxjs/operators';

from(list1).pipe(max((a,b)=>a-b)).subscribe(x => console.log(
   "The Max value is "+x)
);

操作符重命名

在软件包重构期间,一些操作符被重命名,因为它们与 JavaScript 关键字冲突或匹配。列表如下所示:

操作符 重命名为
do() tap()
catch() catchError()
switch() switchAll()
finally() finalize()
throw() throwError()
广告