Rxjs v 6. *
较新版本的rxjs对此进行了简化。
1)运营商
import {map} from 'rxjs/operators';
2)其他
import {Observable,of, from } from 'rxjs';
代替链接,我们需要管道。例如
旧语法:
source.map().switchMap().subscribe()
新语法:
source.pipe(map(), switchMap()).subscribe()
注意:由于与JavaScript保留字的名称冲突,某些运算符会更改名称!这些包括:
do
-> tap
,
catch
-> catchError
switch
-> switchAll
finally
-> finalize
Rxjs v 5. *
我写这个答案部分是为了帮助自己,因为我每次需要导入运算符时都会不断检查文档。让我知道是否可以做一些更好的方法。
1)import { Rx } from 'rxjs/Rx'
;
这将导入整个库。然后,您不必担心加载每个运算符。但是您需要附加Rx。我希望摇树将优化并仅选择所需的功能(需要验证),如注释中所述,摇树无济于事。所以这不是优化的方式。
public cache = new Rx.BehaviorSubject('');
或者,您可以导入单个运算符。
这将优化您的应用程序以仅使用那些文件:
2) import { _______ } from 'rxjs/_________';
这种语法通常用于主要对象(例如Rx
自身或类似对象)Observable
,
可以使用此语法导入的关键字
Observable, Observer, BehaviorSubject, Subject, ReplaySubject
3) import 'rxjs/add/observable/__________';
更新Angular 5
Angular 5使用rxjs 5.5.2+
import { empty } from 'rxjs/observable/empty';
import { concat} from 'rxjs/observable/concat';
这些通常直接与Observable一起使用。例如
Observable.from()
Observable.of()
可以使用以下语法导入的其他此类关键字:
concat, defer, empty, forkJoin, from, fromPromise, if, interval, merge, of,
range, throw, timer, using, zip
4) import 'rxjs/add/operator/_________';
更新Angular 5
Angular 5使用rxjs 5.5.2+
import { filter } from 'rxjs/operators/filter';
import { map } from 'rxjs/operators/map';
这些通常在创建Observable之后进入流中。像下面flatMap
的代码片段一样:
Observable.of([1,2,3,4])
.flatMap(arr => Observable.from(arr));
其他使用以下语法的此类关键字:
audit, buffer, catch, combineAll, combineLatest, concat, count, debounce, delay,
distinct, do, every, expand, filter, finally, find , first, groupBy,
ignoreElements, isEmpty, last, let, map, max, merge, mergeMap, min, pluck,
publish, race, reduce, repeat, scan, skip, startWith, switch, switchMap, take,
takeUntil, throttle, timeout, toArray, toPromise, withLatestFrom, zip
FlatMap:
flatMap
是的别名,mergeMap
因此我们需要导入mergeMap
才能使用flatMap
。
/add
进口注意事项:
在整个项目中,我们只需要导入一次。因此,建议在一个地方进行。如果它们包含在多个文件中,并且其中一个被删除,则由于错误的原因,构建将失败。
import {Observable} from 'rxjs/Observable';
会导入Observable,但是如果您正在使用promises,则不需要全部导入toPromise
它。