Pipeable Operators are the kind that can be piped to Observables using the syntax observableInstance.pipe(operator()). These include, filter(…), and mergeMap(…). When called, they do not change the existing Observable instance. Instead, they return a new Observable, whose subscription logic is based on the first Observable.
A Pipeable Operator is a function that takes an Observable as its input and returns another Observable. It is a pure operation: the previous Observable stays unmodified.

operator就是函数式编程世界里的一等公民,接收一个Observable作为输入,返回另一个新的Observable对象。

Operators are the essential pieces that allow complex asynchronous code to be easily composed in a declarative manner.

借助operator,我们可以使用一种声明式的方式来进行异步编程。

map((x: number) => x * x)(of(1, 2, 3)).subscribe((v) => console.log(`value: ${v}`));

上面这个例子里map的左右括号很有迷惑性,乍一看很像函数调用的括号,实际上括号内包含的是箭头函数的函数体。

下图这对括号才是真正函数调用的括号。

let a = (x: number) => x * x;let b = map(a);let c = of(1,2,3);// c.subscribe((data) => console.log('value: ' + data ));let d = b(c);d.subscribe((data) => console.log('diablo: ' + data));


 let a = (x: number) => x * x;let b = map(a);let c = of(1,2,3);// c.subscribe((data) => console.log('value: ' + data ));let d = b(c);d.subscribe((data) => console.log('diablo: ' + data));let e = (x: number) => x + x;let f = map(e);let g = f(d);g.subscribe((data) => console.log('baal: ' + data));

一旦operators的嵌套个数变多,代码可读性将急剧下降:

op4()(op3()(op2()(op1()(obs))))

因此有了Observable对象的pipe方法。

使用Observable的pipe方法重构之后的代码,可读性提高了很多:

语法:

obs.pipe(op1(),op2(),op3(),op3(),
)

pipe里用逗号分隔多个operator,operators名称加上括号,括号里是具体的操作逻辑。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

rxjs operator学习笔记相关推荐

  1. RxJs SwitchMap 学习笔记

    网址:https://www.learnrxjs.io/learn-rxjs/operators/transformation/switchmap The main difference betwee ...

  2. RxJS mergeMap 学习笔记

    https://www.learnrxjs.io/learn-rxjs/operators/transformation/mergemap This operator is best used whe ...

  3. Rxjs merge 学习笔记

    官方链接:https://rxjs-dev.firebaseapp.com/api/index/function/merge Creates an output Observable which co ...

  4. C++ 【学习笔记】 - 基础(class、inline、explict、new、delete、static、this、mutable、friend、operator、virtual)

    上上一篇:java全家桶 上一篇:C语言 [学习笔记] - 基础.理论(原码/反码/补码).函数(字符串.定义).指针.内存(函数.结构).复合类型.函数(调用原理.指针.接口) 视频:https:/ ...

  5. 《Angular4从入门到实战》学习笔记

    <Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...

  6. 《Angular4从入门到实战》学习笔记(图文)

    <Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...

  7. 影像组学视频学习笔记(6)-特征筛选之LASSO回归(理论)、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(6)主要介绍: 特征筛选之LASSO回归分析(理论通俗讲解) LASSO (Least Absolute Shrinkage Selec ...

  8. [学习笔记]CDQ分治

    分治,考虑前一半对后一半的影响. (和一般分治不太相同的思想是,一般分治不分谁对谁的影响,跨mid的都要统计.(全局变量统计) 而CDQ貌似要落脚到前一半对后一半的影响上,也就是贡献在后一半统计,由前 ...

  9. Linux第二周学习笔记(7)

    Linux第二周学习笔记(7) 2.13 文档查看cat_more_less_head_tail (1). cat命令 cat命令:用于查看一个文件的内容并将其显示在屏幕上 cat-A命令:显示所有的 ...

最新文章

  1. UIPickerView
  2. Matlab——GUI程序操作说明
  3. robodk导出html错误,在优傲机器人示教器上调试RoboDK机器人程序
  4. 一个有用的Chrome扩展应用:SAP UI5 Inspector
  5. Php学习准备(环境)
  6. mysql模拟题三_MySQL 练习题3
  7. linux ip addr peer,CentOS 7 设置网络IP地址
  8. Kubernetes学习总结(8)—— Kubernetes Pod 资源管理 和 Pod 服务质量
  9. ACM将一个十进制的数转换为一个十六进制的数输出
  10. 理解redux中Middleware
  11. adobe黑体std能商用_adobe黑体std字体下载
  12. sap 流程图 退货销售订单_ERP系统:退货流程的解决方案
  13. 建立一个电脑网络至少需要两台计算机,两台电脑想共享一台打印机,需要什么条件?...
  14. 计算机休眠会断电吗,电脑「睡眠」和「休眠」原来有这么大区别,下次别用错了。...
  15. sitemap生成器-网站sitemap生成器-免费sitemap自动生成
  16. JavaScript排他思想
  17. Bat(批处理)文件编写手册(一)
  18. 7000字和你聊聊如何设计一款高并发架构(建议收藏)
  19. 2022考研日志(已完结)
  20. 【缅怀】缅怀汶川地震记

热门文章

  1. 大数据入门笔记(三)
  2. E-SKILL网络工程师考试认证必备
  3. 画胖小人和瘦小人,建造者模式版本
  4. 发布一个自己开发的网站
  5. 最大公约数和最小公倍数 模板
  6. SCA/SDO与WCF的比较
  7. Rabbitmq集群高可用部署详细
  8. CSS: hover选择器的使用
  9. LOJ#2230. 「BJOI2014」大融合
  10. stringBuffer、StringBuilder、排序、Arrays、Jdk1.5新特性(java基础知识十三)