资讯专栏INFORMATION COLUMN

从命令式到响应式(十)

kycool / 446人阅读

摘要:加上以后的操作符大都是直接将输入流映射到一个输出流,并且它们都不关心输入流上的值。如果输入流没发出任何值,只发出完成通知,那么发出一个默认值。与错误相关的一些操作符,如已经提到的当输入流上有错误时,可以发出重试,传入的参数就是重试的次数。

这个系列不知不觉已经写到10了,单纯从使用上来说的话,大部分的知识点也都讲过了,本来不打算写了,刚好今天有同学在群里说希望能总结一下常用的操作符,那就用这篇文章给这个系列画一个句号吧。

已经提到过的

早在这个系列的第4,第5章的时候就提到过了操作符,有兴趣的同学可以翻一下,这里简单的回顾一下:

创建类:3个,分别是 from,of 和 timer;

过滤类:5个,分别是 filter, first, skip,take 和 takeUntil;

组合类:5个,分别是 combineLatest, withLatestFrom, zip, merge, forkJoin;

转换类:5个,分别是 map, mergeMap,switchMap, concatMap, groupBy;

聚合类:2个,分别是 reduce,scan;

另外在其它的章节的示例中用到过的还有delay,retryWhen,share,switchMapTo,mapTo,bufferCount,delay,takeWhile,如果看到这些名字你就能清楚的说出它们的作用的话,那么恭喜你,数据处理中要面临的多数场景其实你都已经可以应付了。

rxjs的操作符大致有120个左右(5.x版本),除了上面那28个,我们再来看下还有哪些会经常用到。

其它一些常用的操作符

这章里就不详细的解释每一操作符了,只简单提一下功能,关于如何学习它们可以参照第4章的内容。

x 到 xMap 再到 xMapTo。xMap,这类操作符大都是在基础功能上增加 map 功能。加上To以后的操作符xMapTo大都是直接将输入流映射到一个输出流,并且它们都不关心输入流上的值。

concat 连接流,需要注意被连接的流需要发出完成通知。

concatMapTo 和concatMap类似,只不过连接的流始终是相同行为的流。

mergeMapTo 和mergeMap类似,只不过内部流始终是相同行为的流。

使代码更好的保持响应式风格的操作符

never 一条永远不会发出任何通知的流。

empty 一条只发出,并且立刻发出完成通知的流。

defaultIfEmpty 如果输入流没发出任何值,只发出完成通知,那么发出一个默认值。

与错误相关的一些操作符,如已经提到的retryWhen

retry 当输入流上有错误时,可以发出重试,传入的参数就是重试的次数。

catchError 5.x版本里叫 catch,毫无疑问就是用来捕获流上的错误的。

throwError 一条只发出,并且立刻发出错误通知的流。

用来周期性发出值的流,如已经提到的timer

interval 只看名字就知道它就是一个计时器,参数就是发出值的周期。

一些降低数据发出频率的操作符 或者 防止值重复的操作符

distinct 用来鉴别值是否应该被认为是相同的,可以接受一个可选的函数作为参数。

distinctUntilChanged 这个操作符最大的优势在于,传入它的函数,可以接收当前值和前一个值作为参数。

distinctUntilKeyChanged 这个就简单粗暴多了,通过一个key来判断值是否发出了改变。

debounceTime 控制表单字段的数据发出频率时经常会用到,比如输入值改变时自动发出请求去服务器拉取数据的场景。

auditTime 在一定时间内忽略输入流上的值,只发出时间过后的输入流上最后发出的值。

throttleTime 和auditTime差不多,只是发出时间过后输入流上最先出出的值。

其它

partition filter 只能让你拿到"true"或"false"的数据流,而这个操作符可以让你同时拿到两个条,一条完全发出"true‘值,另一条完全发出’false‘值。

iff 在订阅的那一瞬间再决定使用哪条一条流,第一个参数是判断函数,第二个参数是判定结果为true时使用的流,第三个参数当然就是false时使用的流。

timeout 通俗的说就是’我只想等xxx时间,这段时间内没有发出值的话,我认为over了。’,就是用来设置超时时间而已。

tap 5.x的版本里也就做do,意思就是在数据处理的过程中开个小差做点其它事情,比如调试时你会经常需要它把数据log到控制台上。

find 找到流上符合某个条件的第一个值。

every 流上的值是不是都符合某一个条件。

加上之前的28个,一共总结了49个操作符,如果这些不能满足你的业务需求,可以仔细研究一下官网上公布的其它操作符,相信总有一款适合你!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97284.html

相关文章

  • 重磅:前端 MVVM 与 FRP 的升阶实践 —— ReRest 可视化编程

    摘要:是前端开发领域新兴的方法论体系,它继承了与编程理念,在技术上有不少创新。但专利与开源协议是平行的两个世界,改底层也不大容易解决问题。此外,要求在中结合各属性的是否变化,判断是否该触发更新。 ReRest (Reactive Resource State Transfer) 是前端开发领域新兴的方法论体系,它继承了 MVVM 与 FRP 编程理念,在技术上有不少创新。本文从专利稿修改而来...

    Cciradih 评论0 收藏0
  • 收集整理适用博客建站免费开源Wordpress主题-简约好看的WP主题

    摘要:最重要的就是找一个适合自己的主题了。事实上,免费主题也非常多,而且很多的免费主题在功能上和界面美观上已经大大超过了付费的主题。加上这些主题都是开源的,基本上可以在上找得到源码,安全性是没有问题,主题的作者也在不断更新当中。WordPress最重要的就是找一个适合自己的主题了。好一点的WordPress主题基本上都是要收费的,而且价格还不便宜,这导致了不少的新手朋友们很为难。而有时我们仅仅根据...

    番茄西红柿 评论0 收藏2637
  • 响应设计个人的一些总结

    摘要:所以一个网,甚至是响应式设计,在两个平台上都会损害您整体的。三响应式与如果把网站作为一个单独的网站,如果网站的内容与桌面版的内容相对缺少,导致用户回到桌面端的网站,会记录这种选择,使搜索排名降低,国内百度就不知道会怎样。 一、为什么需要响应式设计(responsible web design) 1. 响应式发展背景 1、屏幕尺寸的快速变化,iphone为320x480,分辨率在未来可以...

    LeoHsiun 评论0 收藏0
  • JMeter使用记录整理()非GUI模

    摘要:易于持续集成,可通过脚本命令执行,实际压测建议使用命令行模式。 目录 命令参数 执行示例 生成测试报告 利用已有.jtl文件生成报告 无.jtl文件生成测试报告 报告内容解析 Dashboard Charts 所遇问题 JMeter可以运行模式有两种,一种是GUI图形,另一种是命令模式运行也...

    newsning 评论0 收藏0

发表评论

0条评论

kycool

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<