首页 > 解决方案 > 为什么我应该在 Angular 订阅中使用 select 和管道?

问题描述

我正在阅读 angular 的文档及其对 RxJS 库的使用。我找到了这个信息

管道

您可以使用管道将运算符链接在一起。管道让您可以将多个函数组合成一个函数。pipe() 函数将要组合的函数作为其参数,并返回一个新函数,该函数在执行时按顺序运行组合函数。

所以管道的目的是链接多个函数,但让我好奇的是,我见过很多次使用pipe内部只有一个函数,例如:

this.itemSubscription = this.store
            .pipe(select(state => state.items.root))
            .subscribe(state => {
                this.items = state.items;
            });

当我尝试使用selectwithoutpipe时,我的 tslint 会说:

不推荐使用 select:从 6.1.0 开始。请改用可管道选择运算符。(弃用)tslint(1)

为什么会这样?我错过了什么吗?在网上找不到任何相关的解释。

标签: angularselectrxjspipestore

解决方案


Pipe在 v5.5 中被引入 RxJS 以获取如下所示的代码:

of(1,2,3).map(x => x + 1).filter(x => x > 2);

把它变成这个

of(1,2,3).pipe(
  map(x => x + 1),
  filter(x => x > 2)
);

相同的输出,相同的概念,但语法不同。

它清理了 'observable.prototype' 并使 RxJS 库更可摇树,你只需要导入你使用的东西。它还使编写和使用第三方运算符变得更加容易。


推荐阅读