欢迎指导与讨论 : )

    

  前言

    本文是笔者翻译 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. Postgresql HStore 插件试用小结

    一,     安装 环境介绍:官方说postgresql 9.3 版本之后支持HStore 插件,目前最新版本10.3 本次测试版本:10.1 或 9.6.2 进入psql 运行环境,使用管理员(高级 ...

  2. 20155231 实验四 Android程序设计

    20155231 实验四 Android程序设计 实验要求 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理器的使用: 掌握Android中事 ...

  3. 20155325实验四 Android程序设计

    实验四 Android程序设计-1 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)&g ...

  4. WPF设置ListBoxItem失去焦点时的背景色

    <!--全局ListBoxItem--> <Style TargetType="ListBoxItem"> <Style.Resources> ...

  5. 分块算法&BZOJ2002

    题目传送门 第一次接触分块...... 分块查找是折半查找和顺序查找的一种改进方法,分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况. 分块修改理论复杂度为O ...

  6. 【SQLSERVER】如何找出字符串中的数字

    可以通过写自定义函数实现,以下提供两种思路来解决: 1.通过正则匹配,找到字符串中的数字,一个一个拼起来 /*方法一: 一个一个找出来*/ CREATE FUNCTION [dbo].[Fun_Get ...

  7. LNMP的安装--详细版

    一.软件概述 [root@webserver ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@webserver ~]# u ...

  8. angular中的$q服务实例

    用于理解$q服务 参考:http://www.zouyesheng.com/angular.html#toc39 广义回调管理 和其它框架一样, ng 提供了广义的异步回调管理的机制. $http 服 ...

  9. 【JUC源码解析】ReentrantReadWriteLock

    简介 ReentrantReadWriteLock, 可重入读写锁,包括公平锁和非公平锁,相比较公平锁而言,非公平锁有更好的吞吐量,但可能会出现队列里的线程无限期地推迟一个或多个读线程或写线程的情况, ...

  10. js显示对象所有属性和方法的函数

    function ShowObjProperty2( obj ) { // 用来保存所有的属性名称和值 var attributes = '' ; var methods = '' // 开始遍历 f ...