欢迎指导与讨论 : )

    

  前言

    本文是笔者翻译 RxJS 5.X 官网各类operation操作系列的的第四篇 —— ErrorHanding异常处理、Condition Operator情况操作、Mathmatical数学操作。如有错漏,希望大家指出提醒O(∩_∩)O。更详细的资料尽在rxjs官网 【http://reactivex.io/rxjs/manual/overview.htm】与带有demo例子的网站【http://xgrommx.github.io/rx-book/content/observable】。

    本文有关Error Handing操作的内容有:catch、retry、retryWhen

    有关Condition操作的内容有:defaultIfEmpty、every、find、findIndex、isEmpty

    有关Mathmatical操作的内容有:count、max、min、reduce

  一、catch

    捕抓当前Observable可能出现的错误,当源Observable出现异常时,会停止继续发射值。

let r$ = Rx.Observable.create(( observer) => {
observer.next( 1 );
observer.error( 'hello' );
observer.next( 2 );
}).catch( err => console.log( err )) r$.subscribe( x => console.log( x )) // 输出:1, 'hello'
// 不输出:2

  二、retry

    当源Observable抛出异常时,会重新执行源Observable,并且能够根据参数设置重新执行的次数。

let r$ = Rx.Observable.create(( observer) => {
observer.next( 1 );
observer.next( 2 );
observer.error( 'hello' );
}).retry( 2 ) r$.subscribe( x => console.log( x ))
// 先输出:1,2
// 再输出:1,2, 1,2 因为重新执行了2次

  三、retryWhen

     当满足条件值,不断重新执行源Observable

this.http.get( url,options )
.retryWhen(( errors ) => {
return errors
.mergeMap((error) => (error.status === 429) ? Observable.throw(error) : Observable.of(error))
.delay(1000)
.take(2);
})
.catch((res) => this.handleError(res)); // angular2 http例子

  四、defaultIfEmpty

    若Observable在结束时,还没有发射过任何值,则发射该操作的参数的值

Rx.Observable.empty( )
.defaultIfEmpty( 42 )
.subscribe( x => console.log( x )) // 输出 42

  五、every

    若Observable所发射的每个值都符合条件,则返回 true,若不,则返回 false

Rx.Observable.of( 1, 2, 3, 4 )
.every( x => x < 5 )
.subscribe( x => console.log( x ))
// 输出:true

  六、find

    返回Observable所发射值的第一个符合条件的项

Rx.Observable.of( 1, 2, 3, 4, 5, 15 )
.find( x => x % 5 === 0 )
.subscribe( x => console.log( x ))
// 输出:5

  七、findIndex

    返回Observable所发射值的第一个符合条件的项的下标

Rx.Observable.of(  1, 2, 3, 4, 5 )
.findIndex( x => x % 5 === 0 )
.subscribe( x => console.log( x ))
// 输出:4

  八、isEmpty  

    判断Observable是否为空,是则返回 true,否则返回 false

Rx.Observable.empty( )
.isEmpty( )
.subscribe( x => console.log( x ))
// 输出:true

  九、count

    当Observable停止发射值时,返回Observable已发射的项的个数

Rx.Observable.of( 1,2,3,4 )
.count( )
.subscribe( x => console.log( x ))
// 输出:4

  十、max

    当Observable停止发射值时,返回Observable已发射值的最大数值项的值

Rx.Observable.of( 1,2,100,3,4 )
.max( )
.subscribe( x => console.log( x ))
// 输出:100

  十一、min

      当Observable停止发射值时,返回Observable已发射值的最小数值项的值

Rx.Observable.of( 100,1,2,3,4 )
.min( )
.subscribe( x => console.log( x ))
// 输出:1

  十二、reduce

    对Observable所发射的序列,进行reduce叠加操作

Rx.Observable.of( 1,2,3,4,5 )
.reduce(( pre , cur) => pre + cur, 100)
.subscribe( x => console.log( x )) // 输出:115

rxjs5.X系列 —— ErrorHandling/Condition/Mathematical系列 api 笔记的更多相关文章

  1. ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用

    在前面几篇随笔介绍了我对ABP框架的改造,包括对ABP总体的介绍,以及对各个业务分层的简化,Web API 客户端封装层的设计,使得我们基于ABP框架的整体方案越来越清晰化, 也越来越接近实际的项目开 ...

  2. 【Xamarin挖墙脚系列:Xamarin.Android的API设计准则】

    原文:[Xamarin挖墙脚系列:Xamarin.Android的API设计准则] 前言 楼主也是看着Xamarin的官方文档来的.基本也是照猫画虎.英语勉强凑合.翻译的不对的地方,大家多多指教.(这 ...

  3. Hadoop 系列(三)Java API

    Hadoop 系列(三)Java API <dependency> <groupId>org.apache.hadoop</groupId> <artifac ...

  4. Zookeeper 系列(五)Curator API

    Zookeeper 系列(五)Curator API 一.Curator 使用 Curator 框架中使用链式编程风格,易读性更强,使用工程方法创建连接对象使用. (1) CuratorFramewo ...

  5. Zookeeper 系列(四)ZKClient API

    Zookeeper 系列(四)ZKClient API 环境准备: <dependency> <groupId>com.101tec</groupId> <a ...

  6. Zookeeper 系列(三)Zookeeper API

    Zookeeper 系列(三)Zookeeper API 本节首先介绍 Zookeeper 的 Shell 命令,再对 Java 操作 Zookeeper 的三种方式进行讲解,本节先介绍 Zookee ...

  7. Web API使用记录系列(一)创建API项目与基本配置

    本系列文章主要记录Web API使用过程中的一些个人总结,包括创建API项目.基础配置.ApiTestClient使用与HelpPage页面的优化.Owin与OAuth的使用等. 本节主要内容是API ...

  8. ABP开发框架前后端开发系列---(10)Web API调用类的简化处理

    在较早期的随笔<ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用>已经介绍了Web API调用类的封装处理,虽然这些调用类我们可以使用代码生成工具快 ...

  9. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

随机推荐

  1. 基于fork(),execvp()和wait()实现类linux下的bash——mybash

    基于fork(),execvp()和wait()实现类linux下的bash--mybash 预备知识 fork():fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可 ...

  2. Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)

    case语句适用于需要进行多重分支的应用情况. case分支语句的格式如下: case $变量名 in 模式1) 命令序列1 ;; 模式2) 命令序列2        ;; *) 默认执行的命令序列  ...

  3. ubuntu装openVPN会遇到的问题

    与Windows系统相比,Linux下安装OpenVPN的过程就显得有点曲折. 如果你使用的是Ubuntu系统,你可以直接使用命令sudo apt-get install -y openvpn来安装O ...

  4. Linux无法su到普通用户

    无法通过su命令登录到普通用户 [root@linux-server ~]# su - tomcat su: cannot set user id: Resource temporarily unav ...

  5. springboot+security+JWT实现单点登录

    本次整合实现的目标:1.SSO单点登录2.基于角色和spring security注解的权限控制. 整合过程如下: 1.使用maven构建项目,加入先关依赖,pom.xml如下: <?xml v ...

  6. Zigbee系列(end device)

    End device设备分为睡眠和非睡眠两种(RxOnWhenIdle标记不同). 入网时的association请求,会使用这个标记. 共同特性 子节点多次发送数据失败(无回应),发送孤点扫描(re ...

  7. 3星|麦肯锡合伙人《从1到N》:PPT讲稿,图表不错,讲解不够深入

    从1到N:企业数字化生存指南 两位作者是麦肯锡合伙人.全书插图比较多,图做的还比较有水平.但是相关文字不够深入,我读后的感觉是:图表不是两位执笔者做的,他们对细节不清楚,对图表涉及到的行业也缺乏深入的 ...

  8. HDU 6438

    Problem Description The Power Cube is used as a stash of Exotic Power. There are n cities numbered 1 ...

  9. 该用哪个:Redis与Memcached之间如何选择呢?

    华为云分布式缓存Redis5.0和Memcached都是华为云DCS的核心产品. 那么在不同的使用场景之下,如何选择Redis5.0和Memcached呢? 就由小编为大家进行详细的数据对比分析吧 R ...

  10. leetcode个人题解——#43 Multiply Strings

    思路:高精度乘法就可以了. 有两个错误以前没在意,1.成员属性定义时候不能进行初始化, vector<); 这样隐性调用了函数进行初始化的形式特别要注意,也是错误的: 2.容器类只有分配了空间时 ...