欢迎指导与讨论 : )

    

  前言

    本文是笔者翻译 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. 20155315实验四 Android程序设计

    实验内容 安装 Android Stuidio 学习Android Stuidio调试应用程序 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

  2. 20155330 实验四 Android程序设计

    20155330 实验四 Android程序设计 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局管理器的使用: 3.掌握An ...

  3. [note]左偏树(可并堆)

    左偏树(可并堆)https://www.luogu.org/problemnew/show/P3377 题目描述 一开始有N个小根堆,每个堆包含且仅包含一个数.接下来需要支持两种操作: 操作1: 1 ...

  4. LNMP的安装--详细版

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

  5. 字典(dict)的反转

    1.今天在写12306查询余票时,想给定字典(dict)的值,从而得到字典(dict)的键,但好像字典(dict)方法中没有与此相关的方法,只能退而求其次,反转字典(dict),将原字典(dict)的 ...

  6. cogs1713 [POJ2774]很长的信息

    cogs1713 [POJ2774]很长的信息 原题链接 题解 把两串拼成A+'%'+B+'$'.跑后缀数组然后相邻两点i,i+1不在同一串里就用ht[i]更新答案. 好裸... Code // It ...

  7. L018-课前练习以及知识巩固笔记

    L018-课前练习以及知识巩固笔记 OK,今天课前做了几道题,算是对以往知识的巩固. 1.请描述下列路径的内容是做什么的?/etc/sysctl.conf/etc/rc.local/etc/hosts ...

  8. L015-linux系统文件权限体系手把手详解小结

    L015-linux系统文件权限体系手把手详解小结 2016-5-24 今天星期二,昨天和今天利用一些闲散时间把第15节课学完了,最近有点懒散哈,还得努力才是.. 这节课内容不多,扩展的也少,主要就是 ...

  9. asp.net core webapi项目配置全局路由

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.前言 在开发项目的过程中,我新创建了一个controller,发现vs会给我们直接在controller头添加前缀,比如[Ro ...

  10. Tp框架之命名空间

    命名空间,相当于虚拟目录 实现自动加载类的机制 初始命名空间:Library文件夹 初始命名空间下面有很多根命名空间: 1.Library里面的文件夹 2.APP的模块文件夹 在tp框架中,只有这两个 ...