angular - 为什么我应该在 Angular 订阅中使用 select 和管道?
问题描述
我正在阅读 angular 的文档及其对 RxJS 库的使用。我找到了这个信息
您可以使用管道将运算符链接在一起。管道让您可以将多个函数组合成一个函数。pipe() 函数将要组合的函数作为其参数,并返回一个新函数,该函数在执行时按顺序运行组合函数。
所以管道的目的是链接多个函数,但让我好奇的是,我见过很多次使用pipe
内部只有一个函数,例如:
this.itemSubscription = this.store
.pipe(select(state => state.items.root))
.subscribe(state => {
this.items = state.items;
});
当我尝试使用select
withoutpipe
时,我的 tslint 会说:
不推荐使用 select:从 6.1.0 开始。请改用可管道选择运算符。(弃用)tslint(1)
为什么会这样?我错过了什么吗?在网上找不到任何相关的解释。
解决方案
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 库更可摇树,你只需要导入你使用的东西。它还使编写和使用第三方运算符变得更加容易。
推荐阅读
- crystal-reports - Crystal 报表中的通配符参数
- reactjs - 反应样式(css或scss)在生产中不能正常工作
- r - rep() 来自不同数据帧的行
- flutter - 首次登陆页面时停用 StreamBuilder
- python - 如何更新python selenium下载目录
- typescript - 来自“Typescript 中的评论”插件的 JSDoc 错误“描述不满足正则表达式模式”
- apache-kafka - Java客户端配置了单个Kafka代理IP和端口来连接,如果该代理在集群中关闭怎么办
- java - 在运行时并行编译java类
- spring - 事务隔离(不并发读取相同的数据)
- c# - 如何更改 CROSS APPLY 表达式中的 WHERE 子句