欢迎指导与讨论 : )

    

  前言

    本文是笔者翻译 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. IDEA 通过插件jetty-maven-plugin使用 jetty

    jetty:run -Djetty.port=8080 pom.xml配置 <build> <plugins> <plugin> <groupId>or ...

  2. 20155229 2016-2007-2 《Java程序设计》第一周学习总结

    20155229 2016-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 1~18章的提问: 第一章:怎样撰写Java才不会沦于死背API文件.使用"复制. ...

  3. 20155332 实验二 Java面向对象程序设计

    目录 一.单元测试和TDD 任务一:实现百分制成绩转成"优.良.中.及格.不及格"五级制成绩的功能 任务二:以TDD的方式研究学习StringBuffer 二.面向对象三要素:封装 ...

  4. java随机数的生成

    我们经常会用到随机数的生成,作为唯一性的id或者标识: long now = System.currentTimeMillis(); SimpleDateFormat dateFormat=new S ...

  5. High Water Mark 图示

    +---- high water mark of newly created table | V +-------------------------------------------------- ...

  6. P3368 【模板】树状数组 2(区间增减,单点查询)

    P3368 [模板]树状数组 2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表 ...

  7. 【vijos1049】送给圣诞夜的礼品

    题面 描述 当小精灵们把贺卡都书写好了之后.礼品准备部的小精灵们已经把所有的礼品都制作好了.可是由于精神消耗的缘故,他们所做的礼品的质量越来越小,也就是说越来越不让圣诞老人很满意.可是这又是没有办法的 ...

  8. 小计Tomcat的调优思路

    描述 最近在补充自己的短板,刚好整理到Tomcat调优这块,基本上面试必问,于是就花了点时间去搜集一下tomcat调优 都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录, ...

  9. 人脸检测及识别python实现系列(4)——卷积神经网络(CNN)入门

    人脸检测及识别python实现系列(4)——卷积神经网络(CNN)入门 上篇博文我们准备好了2000张训练数据,接下来的几节我们将详细讲述如何利用这些数据训练我们的识别模型.前面说过,原博文给出的训练 ...

  10. Halcon如何保存仿射变换矩阵

    这里我们通过序列化来实现的,如下图,写到硬盘的HomMat2D_1内容和从硬盘里HomMat2D_2读出的内容一致,源代码在图片下方. Halcon源代码: hom_mat2d_identity (H ...